📅  最后修改于: 2023-12-03 15:07:52.329000             🧑  作者: Mango
在C++ STL(标准模板库)中,map是一种关联容器,允许程序员使用键值对的形式进行数据存储。
crbegin()
和crend()
是map容器中的两个成员函数,它们分别返回一个常量反向迭代器,指向map容器的最后一个元素和第一个元素前面的位置,可以用于逆序遍历map容器。
crbegin()
返回一个常量反向迭代器,指向map容器的最后一个元素。
auto it = map.crbegin();
无。
一个常量反向迭代器,指向map容器的最后一个元素。
#include <iostream>
#include <map>
int main() {
// 创建一个map容器
std::map<int, std::string> map = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
// 从最后一个元素开始遍历map并输出
for (auto it = map.crbegin(); it != map.crend(); it++) {
std::cout << it->first << " " << it->second << std::endl;
}
return 0;
}
输出结果:
3 orange
2 banana
1 apple
crend()
返回一个常量反向迭代器,指向map容器第一个元素前面的位置。
auto it = map.crend();
无。
一个常量反向迭代器,指向map容器第一个元素前面的位置。
#include <iostream>
#include <map>
int main() {
// 创建一个map容器
std::map<int, std::string> map = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
// 从第一个元素前面的位置开始遍历map并输出
for (auto it = map.crend(); it != map.crbegin(); it--) {
std::cout << it[-1].first << " " << it[-1].second << std::endl;
}
return 0;
}
输出结果:
1 apple
2 banana
3 orange
注意事项:
crend()
返回的迭代器指向的是第一个元素前面的位置,因此循环条件应该是迭代器不等于crbegin()
,而不是不等于crend()
。在循环体内,应该先通过[-1]
操作符将迭代器移到当前元素,再进行操作。crbegin()
和crend()
返回的都是常量反向迭代器,不能通过迭代器修改map容器中的元素。