本篇学习unordered_multiset的迭代器操作,具体函数如下
(C++11) | 返回指向起始的迭代器 (公开成员函数) |
(C++11) | 返回指向末尾的迭代器 (公开成员函数) |
代码示例:
#include <unordered_set>
#include <iostream>
#include <string>
using namespace std;
void iteratorOperator()
{
unordered_multiset<int> set1 = {5,8,4,2};
cout << "set1.size = " << set1.size() << " set1.empty = " << set1.empty() << " set1.max_size = " << set1.max_size() << endl;
cout << "set1 of value:" << endl;
for(auto &val: set1)
{
cout << val << "\t";
}
cout << endl;
//1.begin 返回指向起始的迭代器
unordered_multiset<int>::iterator iter1 = set1.begin();
cout << "set1.begin => " << *iter1 << endl;
//*iter1 = 55;
//注:不能通过unordered_multiset的迭代器去修改unordered_multiset元素,原因是修改元素会破坏unordered_multiset组织,所以其实begin和cbegin是一样的效果
//2.cbegin 返回指向起始的常量迭代器,不能通过迭代器修改值a
unordered_multiset<int>::const_iterator iter2 = set1.cbegin();
cout << "set1.cbegin => " << *iter2 << endl;
//*iter2 = 85;//不可以修改值
//3.end 返回指向末尾的迭代器,即最后一元素的下一个位置,可以通过迭代器修改它的值
unordered_multiset<int>::iterator iter3 = set1.end();
--iter3;//指向最后一个元素
cout << "set1.end => " << *iter3 << endl;
//4.cend 返回指向末尾的迭代器,即最后一元素的下一个位置,不能通过迭代器修改它的值
unordered_multiset<int>::const_iterator iter4 = set1.cend();
--iter4;//指向最后一个元素
cout << "set1.cend => " << *iter4 << endl;
//*iter4 = 37;//不可以修改值
}
int main()
{
iteratorOperator();
cout << "Hello, world!" << endl;
return 0;
}
运行结果:
参考:
https://zh.cppreference.com/w/cpp/container/unordered_multiset