本篇学习unordered_multimap的迭代器操作,具体函数如下:
(C++11) | 返回指向起始的迭代器 (公开成员函数) |
(C++11) | 返回指向末尾的迭代器 (公开成员函数) |
示例代码:
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
void iteratorOperator()
{
unordered_multimap<int, std::string> map1 = {
{4, "apple" },
{2, "pear" },
{3, "peach" },
{1, "apricot"}
};
cout << "map1.size = " << map1.size() << " map1.empty = " << map1.empty() << " map1.max_size = " << map1.max_size() << endl;
cout << "map1的值为:" << endl;
for(auto &val: map1)
{
cout << val.first << ": " << val.second << endl;
}
//1.begin 返回指向起始的迭代器,可以通过迭代器修改它的值
unordered_multimap<int, string>::iterator iter1 = map1.begin();
cout << iter1->first << " => " << iter1->second << endl;
iter1->second = "班尼特";
cout << iter1->first << " => " << iter1->second << endl;
//2.cbegin 返回指向起始的常量迭代器,不能通过迭代器修改值
unordered_multimap<int, string>::const_iterator iter2 = map1.cbegin();
cout << iter2->first << " => " << iter2->second << endl;
//iter2->second = "grape";//不可以修改值
//3.end 返回指向末尾的迭代器,即最后一元素的下一个位置,可以通过迭代器修改它的值
unordered_multimap<int, string>::iterator iter3 = map1.end();
--iter3;//指向最后一个元素
cout << iter3->first << " => " << iter3->second << endl;
iter3->second = "宾尼兔";
cout << iter3->first << " => " << iter3->second << endl;
//4.cend 返回指向末尾的迭代器,即最后一元素的下一个位置,不能通过迭代器修改它的值
unordered_multimap<int, string>::const_iterator iter4 = map1.cend();
--iter4;//指向最后一个元素
cout << iter4->first << " => " << iter4->second << endl;
//iter4->second = "plum"; //不可以修改值
}
int main()
{
iteratorOperator();
cout << "hello world" << endl;
return 0;
}
运行结果:
参考:
https://zh.cppreference.com/w/cpp/container/unordered_multimap