C ++ set insert()用于在集合中插入新元素。
因为元素键在集合中是唯一的,所以插入操作首先检查给定键是否已存在于集合中,如果键存在于集合中,则不会将其插入到集合中并迭代到现有的迭代器返回键,否则将新元素插入集合。
//普通引用方式传参 pair<iterator,bool> insert (const value_type& val); //右值引用方式传参 pair<iterator,bool> insert (value_type&& val); //以普通引用的方式传递 val 值 iterator insert (const_iterator position, const value_type& val); //以右值引用的方式传递 val 值 iterator insert (const_iterator position, value_type&& val); template <class InputIterator> void insert (InputIterator first, InputIterator last); void insert (initializer_list<value_type> il); //从 C++ 11开始
val:要插入集合的值。
position:提示在元素中插入元素的位置。
first:要插入范围的起点。
last:要插入范围的末尾。
il:初始化列表。
返回布尔对以表示是否发生插入,并返回指向新插入元素的迭代器。
如果插入单个元素,那么复杂度将是对数的。
如果给出提示,并且给出的位置是最佳位置,则复杂度将摊销为常数。
没有变化。
容器已修改。
此函数不会引发异常。
让我们看一下将元素插入到集合中的简单示例:
#include <iostream> #include <set> using namespace std; int main() { set<int> s; // 插入元素的函数 // 在set容器中 s.insert(1); s.insert(4); s.insert(2); s.insert(5); s.insert(3); cout << "集合中的元素是: "; for (auto it = s.begin(); it != s.end(); it++) cout << *it << " "; return 0; }
输出:
集合中的元素是: 1 2 3 4 5
在上面的示例中,它只是使用给定的键插入元素。
让我们看一个简单的示例,将元素插入指定位置:
#include <iostream> #include <set> using namespace std; int main() { set<int> s; //插入元素的函数 //在set容器中 auto itr = s.insert(s.begin(), 1); itr = s.insert(itr, 4); itr = s.insert(itr, 2); itr = s.insert(itr, 5); itr = s.insert(itr, 3); cout << "集合中的元素是: "; for (auto it = s.begin(); it != s.end(); it++) cout << *it << " "; return 0; }
输出:
集合中的元素是: 1 2 3 4 5
在上面的示例中,元素被插入到定义的位置。
让我们看一个简单的示例,将给定范围内的一组元素插入到另一组:
#include <iostream> # include<iostream> # include<set> using namespace std; int main() { set<int> s1; //插入元素的函数 //在set容器中 s1.insert(1); s1.insert(4); s1.insert(2); s1.insert(5); s1.insert(3); cout << "set1中的元素是: "; for (auto it = s1.begin(); it != s1.end(); it++) cout << *it << " "; set<int> s2; //函数将一个集合插入到另一个集合 //从3到结束的所有元素是 //插入set2 s2.insert(s1.find(3), s1.end()); cout << "\nset2中的元素是: "; for (auto it = s2.begin(); it != s2.end(); it++) cout << *it << " "; return 0; }
输出:
set1中的元素是: 1 2 3 4 5 set2中的元素是: 3 4 5
让我们看一个简单的示例,从初始化列表中插入元素:
#include <iostream> #include <set> using namespace std; int main(void) { set<string> m = {"Java", "C++", "SQL"}; // 插入初始化器列表中的元素 m.insert({"VB", "Oracle"}); cout << "集合包含以下元素:" << endl; for (auto it = m.begin(); it != m.end(); ++it) cout << *it<< endl; return 0; }
输出:
集合包含以下元素: C++ Java Oracle SQL VB
在上面的示例中,元素是从初始化列表中插入的。