在C++ STL中的unordered_map cbegin函数
在C++中,cbegin函数用于返回指向无序映射中第一个元素的常量迭代器。
语法:
unordered_map.cbegin()
参数 :它需要一个可选参数N。如果设定了,返回的迭代器将指向桶中的第一个元素,否则将指向容器中的第一个元素。
返回值 :指向无序映射中第一个元素的常量迭代器。
下面的程序说明了cbegin函数的工作方式:
// CPP程序演示unordered_map中cbegin函数的实现
#include <bits/stdc++.h>
using namespace std;
int main()
{
unordered_map<string, int> mp;
// 添加一些元素到unordered_map中
mp["g"] = 1;
mp["e"] = 2;
mp["k"] = 4;
mp["s"] = 5;
cout << "无序映射的内容:\n";
for (auto it = mp.cbegin(); it != mp.cend(); it++)
cout << it->first << "==>>"
<< it->second << "\n";
}
无序映射的内容:
s==>>5
k==>>4
g==>>1
e==>>2
cbegin()函数返回一个常量迭代器。如果我们试图更改值,我们会得到编译器错误。
// CPP程序演示unordered_map中cbegin函数的实现
#include <bits/stdc++.h>
using namespace std;
int main()
{
unordered_map<string, int> mp;
// 添加一些元素到unordered_map中
mp["g"] = 1;
mp["e"] = 2;
mp["k"] = 4;
mp["s"] = 5;
cout << "无序映射的内容:\n";
for (auto it = mp.cbegin(); it != mp.cend(); it++)
it->second = 10; // 这会导致编译器错误
}
输出:
prog.cpp:在函数'main'中:
prog.cpp:18:20:错误:在只读对象中分配成员'std :: pair ,int> :: second'
it->second = 10; // 这会导致编译器错误
^
时间复杂度: 平均为O(1)。