C++ STL中的unordered_map.cend函数

C++ STL中的unordered_map.cend函数

unordered_map::cend()是C++ STL中的一个内置函数,它返回一个迭代器,指向容器中或其桶中末尾元素之后的位置。在unordered_map对象中,不能保证哪个具体元素被视为其第一个元素。但是,所有容器中的元素都被覆盖,因为范围从其开头到其末尾,直到范围失效。

该函数有两个变体。

语法1:

unordered_map.cend()

参数:此函数不接受任何参数。

返回类型:返回一个迭代器,指向容器的末尾之后的元素。

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    //向unordered_map插入数据
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    //这里不能修改'it'
    for (auto it = ump.cbegin(); it != ump.cend(); ++it)
        cout << it->first << " " << it->second << endl;
    return 0;
}
5 6
1 2
3 4

语法2:

unordered_map.cend ( size n )

参数:此函数接受参数size n 它应该小于bucket count。

返回类型:函数返回一个迭代器,指向其bucket count之一。

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    //向unordered_map插入数据
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    cout << "unordered_map的bucket包含 \n";
    for (int i = 0; i < ump.bucket_count(); i++) {
        cout << "Bucket " << i << " 包含 ";
        for (auto it = ump.cbegin(i); it != ump.cend(i); ++it)
            cout << it->first << " " << it->second;
        cout << endl;
    }
  
    return 0;
}
unordered_map的bucket包含 
Bucket 0 包含 
Bucket 1 包含 1 2
Bucket 2 包含 
Bucket 3 包含 3 4
Bucket 4 包含 
Bucket 5 包含 5 6
Bucket 6 包含

cend()和end()有何不同?

cend()是end()的const版本。同样,cbegin()是begin()的const版本。例如,以下代码显示编译器错误,因为我们尝试修改迭代器中的值。

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    //向unordered_map插入数据
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    //这里不能修改'it'
    for (auto it = ump.cbegin(); it != ump.cend(); ++it)
        it->second = 10;  // 编译器错误
    return 0;
}  

输出:

编译错误:程序中的CPP代码:在函数'int main()'中:
程序.cpp:19:20: 错误:在只读对象中分配成员'std::pair::second'
         it->second = 10;  // COMPILER ERROR

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程