C++ STL 中的 unordered_set 容器类模板中未提供 at() 成员函数,也未对 []
运算符进行重载。因此,要想访问 unordered_set 容器中存储的元素,只能借助 unordered_set 容器的迭代器。
成员方法 | 功能 |
---|---|
begin() | 返回指向容器中第一个元素的正向迭代器。 |
end() | 返回指向容器中最后一个元素之后位置的正向迭代器。 |
cbegin() | 和 begin() 功能相同,只不过其返回的是 const 类型的正向迭代器。 |
cend() | 和 end() 功能相同,只不过其返回的是 const 类型的正向迭代器。 |
find(val) | 查找以值为 key 的元素,如果找到,则返回一个指向该元素的正向迭代器;反之,则返回一个指向容器中最后一个元素之后位置的迭代器(如果 end() 方法返回的迭代器)。 |
equal_range(val) | 返回一个 pair 对象,其包含 2 个迭代器,用于表明当前容器中值为 key 的元素所在的范围。 |
使用 begin 和 end 迭代器访问元素
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_set<string> unordered_set1{"HaiCoder", "www.haicoder.net", "haicoder.net"};
for(auto iter = unordered_set1.begin(); iter != unordered_set1.end(); ++iter)
{
cout << *iter << endl;
}
return 0;
}
因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ unordered_set.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 unordered_set 的迭代器,访问了 unordered_set 的所有元素。
使用 cbegin 和 cend 迭代器访问元素
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_set<string> unordered_set1{"HaiCoder", "www.haicoder.net", "haicoder.net"};
for(auto iter = unordered_set1.cbegin(); iter != unordered_set1.cend(); ++iter)
{
cout << *iter << endl;
}
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 cbegin 和 cend 反向迭代器,遍历了 unordered_set 的所有元素。
C++ STL 中的 unordered_set 容器类模板中未提供 at() 成员函数,也未对 []
运算符进行重载。因此,要想访问 unordered_set 容器中存储的元素,只能借助 unordered_set 容器的迭代器。