📜  C++ STL中的unordered_map终止

📅  最后修改于: 2021-05-30 02:07:01             🧑  作者: Mango

unordered_map :: cend()是C++ STL中的内置函数,该函数返回一个迭代器,该迭代器指向容器或其存储桶之一中结束元素之后的位置。在unordered_map对象中,不能保证将哪个特定元素视为其第一个元素。但是容器中的所有元素都被覆盖了,因为范围从其开始到结束直到无效。

此函数有两种变体。
语法1:

unordered_map.cend()

参数:该函数不接受任何参数。
返回类型:函数将迭代器返回到容器末端之后的元素。

// CPP program to illustrate
// unordered_map cend()
#include 
using namespace std;
  
int main()
{
  
    unordered_map ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    // here 'it' can not be modified
    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 )

参数:该函数接受参数大小n ,该大小应小于存储桶数。
返回类型:函数将迭代器返回到其存储桶计数之一。

// CPP program to illustrate
// unordered_map cend()
#include 
using namespace std;
  
int main()
{
  
    unordered_map ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    cout << "unordered_map bucket contains \n";
    for (int i = 0; i < ump.bucket_count(); i++) {
        cout << "Bucket " << i << " contains ";
        for (auto it = ump.cbegin(i); it != ump.cend(i); ++it)
            cout << it->first << " " << it->second;
        cout << endl;
    }
  
    return 0;
}
输出:
unordered_map bucket contains 
Bucket 0 contains 
Bucket 1 contains 1 2
Bucket 2 contains 
Bucket 3 contains 3 4
Bucket 4 contains 
Bucket 5 contains 5 6
Bucket 6 contains

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

// CPP program to illustrate
// unordered_map cend()
#include 
using namespace std;
  
int main()
{
  
    unordered_map ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    // here 'it' can not be modified
    for (auto it = ump.cbegin(); it != ump.cend(); ++it)
        it->second = 10;  // COMPILER ERROR
    return 0;
}

输出 :

Compilation Error in CPP code :- prog.cpp: In function 'int main()':
prog.cpp:19:20: error: assignment of member 'std::pair::second' in read-only object
         it->second = 10;  // COMPILER ERROR
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”