如果我们需要向 STL 中的 unordered_set 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法。
//普通引用方式传参
pair<iterator,bool> insert (const value_type& val);
//右值引用方式传参
pair<iterator,bool> insert (value_type&& val);
其中,val 表示要添加的新元素,该方法的返回值为 pair 类型。以上 2 种格式的区别仅在于传递参数的方式不同,即第一种采用普通引用的方式传参,而第二种采用右值引用的方式传参。右值引用为 C++ 11 新添加的一种引用方式。
以上 2 种语法格式的 insert() 方法,返回的都是 pair 类型的值,其包含 2 个数据,一个迭代器和一个 bool 值:当向 unordered_set 容器添加元素成功时,该迭代器指向 unordered_set 容器新添加的元素,bool 类型的值为 true;
如果添加失败,即证明原 unordered_set 容器中已存有相同的元素,此时返回的迭代器就指向容器中相同的此元素,同时 bool 类型的值为 false。
//以普通引用的方式传递 val 值
iterator insert (const_iterator position, const value_type& val);
//以右值引用的方式传递 val 值
iterator insert (const_iterator position, value_type&& val);
以上 2 种语法格式中,insert() 函数的返回值为迭代器:当向 unordered_set 容器添加元素成功时,该迭代器指向容器中新添加的元素;当添加失败时,证明原 unordered_set 容器中已有相同的元素,该迭代器就指向 unordered_set 容器中相同的这个元素。
使用 insert 给 unordered_set 插入元素
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
std::unordered_set<string> myunordered_set;
myunordered_set.insert("HaiCoder");
myunordered_set.insert("www.haicoder.net");
myunordered_set.insert("haicoder.net");
for(auto iter = myunordered_set.begin(); iter != myunordered_set.end(); ++iter)
{
cout << *iter << endl;
}
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 insert 将元素插入到了 unordered_set 中。
使用 insert 给 unordered_set 插入元素
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
std::unordered_set<string> myunordered_set;
myunordered_set.insert("HaiCoder");
myunordered_set.insert(myunordered_set.begin(), "www.haicoder.net");
myunordered_set.insert(myunordered_set.end(), "haicoder.net");
for(auto iter = myunordered_set.begin(); iter != myunordered_set.end(); ++iter)
{
cout << *iter << endl;
}
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 insert 和迭代器将元素插入到了 unordered_set 中。
如果我们需要向 STL 中的 unordered_set 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法。