在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)。
极客教程