📅  最后修改于: 2020-10-20 07:56:34             🧑  作者: Mango
C++ set insert()用于在集合中插入新元素。
因为元素密钥在集合中是唯一的,所以插入操作首先检查给定密钥是否已存在于集合中,如果密钥存在于集合中,则不会将其插入到集合中并迭代到现有的迭代器返回key,否则在集合中插入新元素。
single element (1) pair insert (const value_type& val); //until C++ 11
with hint (2) iterator insert (iterator position, const value_type& val); //until C++ 11
range (3) template
void insert (InputIterator first, InputIterator last); //until C++ 11
single element (1) pair insert (const value_type& val);
pair insert (value_type&& val); //since C++ 11
with hint (2) iterator insert (const_iterator position, const value_type& val);
iterator insert (const_iterator position, value_type&& val); //since C++ 11
range (3) template
void insert (InputIterator first, InputIterator last); //since C++ 11
initializer list (4) void insert (initializer_list il); //since C++ 11
val:要插入集合的值。
position:提示在集合中插入元素的位置。
第一:插入范围的起点。
last:要插入范围的末尾。
il:初始化列表。
返回布尔对以指示是否发生插入,并返回指向新插入元素的迭代器。
没有变化。
容器已修改。
此函数不会引发异常。
让我们看一下将元素插入到集合中的简单示例:
#include
#include
using namespace std;
int main()
{
set s;
// Function to insert elements
// in the set container
s.insert(1);
s.insert(4);
s.insert(2);
s.insert(5);
s.insert(3);
cout << "The elements in set are: ";
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in set are: 1 2 3 4 5
在上面的示例中,它只是使用给定的键插入元素。
让我们看一个简单的示例,将元素插入指定位置:
#include
#include
using namespace std;
int main()
{
set s;
// Function to insert elements
// in the set container
auto itr = s.insert(s.begin(), 1);
// the time taken to insertion
// is very less as the correct
// position for insertion is given
itr = s.insert(itr, 4);
itr = s.insert(itr, 2);
itr = s.insert(itr, 5);
itr = s.insert(itr, 3);
cout << "The elements in set are: ";
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in set are: 1 2 3 4 5
在上面的示例中,元素被插入到定义的位置。
让我们看一个简单的示例,将给定范围内的一组元素插入到另一组:
#include
# include
# include
using namespace std;
int main()
{
set s1;
// Function to insert elements
// in the set container
s1.insert(1);
s1.insert(4);
s1.insert(2);
s1.insert(5);
s1.insert(3);
cout << "The elements in set1 are: ";
for (auto it = s1.begin(); it != s1.end(); it++)
cout << *it << " ";
set s2;
// Function to insert one set to another
// all elements from where 3 is to end is
// inserted to set2
s2.insert(s1.find(3), s1.end());
cout << "\nThe elements in set2 are: ";
for (auto it = s2.begin(); it != s2.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in set1 are: 1 2 3 4 5
The elements in set2 are: 3 4 5
让我们看一个简单的示例,从初始化列表中插入元素:
#include
#include
using namespace std;
int main(void) {
set m = {"Java", "C++", "SQL"};
// Insert the elements from an initializer_list
m.insert({"VB", "Oracle"});
cout << "Set contains following elements" << endl;
for (auto it = m.begin(); it != m.end(); ++it)
cout << *it<< endl;
return 0;
}
输出:
Set contains following elements
C++
Java
Oracle
SQL
VB
在上面的示例中,元素是从初始化列表中插入的。