multimap学习之迭代器操作begin,cbegin(C++11),end,cend(C++11),rbegin,crbegin
本篇学习multimap的迭代器操作,具体的函数有如下:
begin cbegin (C++11) |
返回指向起始的迭代器 (公开成员函数) |
end cend (C++11) |
返回指向末尾的迭代器 (公开成员函数) |
rbegincrbegin (C++11) |
返回指向起始的逆向迭代器 (公开成员函数) |
rendcrend (C++11) |
返回指向末尾的逆向迭代器 (公开成员函数) |
#include <map>
#include <iostream>
#include <string>using namespace std;void iteratorOperator()
{multimap<int, std::string> map1 = {{2, "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 返回指向起始的迭代器,可以通过迭代器修改它的值multimap<int, string>::iterator iter1 = map1.begin();cout << "iter1.first = " << iter1->first << "\t iter1.second = " << iter1->second << endl;iter1->second = "grape";cout << "iter1.first = " << iter1->first << "\t iter1.second = " << iter1->second << endl;//2.cbegin 返回指向起始的常量迭代器,不能通过迭代器修改值multimap<int, string>::const_iterator iter2 = map1.cbegin();cout << "iter2.first = " << iter2->first << "\t iter2.second = " << iter2->second << endl;//iter2->second = "grape";//不可以修改值//3.end 返回指向末尾的迭代器,即最后一元素的下一个位置,可以通过迭代器修改它的值multimap<int, string>::iterator iter3 = map1.end();--iter3;//指向最后一个元素cout << "iter3.first = " << iter3->first << "\t iter3.second = " << iter3->second << endl;iter3->second = "cherry";cout << "iter3.first = " << iter3->first << "\t iter3.second = " << iter3->second << endl;//4.cend 返回指向末尾的迭代器,即最后一元素的下一个位置,不能通过迭代器修改它的值multimap<int, string>::const_iterator iter4 = map1.cend();--iter4;//指向最后一个元素cout << "iter4.first = " << iter4->first << "\t iter4.second = " << iter4->second << endl;//iter4->second = "plum"; //不可以修改值//5.rbegin 返回指向起始的逆向迭代器,即最后一个元素,可以通过迭代器修改它的值multimap<int, string>::reverse_iterator iter5 = map1.rbegin();cout << "iter5.first = " << iter5->first << "\t iter5.second = " << iter5->second << endl;iter5->second = "strawberry";cout << "iter5.first = " << iter5->first << "\t iter5.second = " << iter5->second << endl;//6.crbegin 返回指向起始的逆向迭代器,即最后一个元素,不能通过迭代器修改它的值multimap<int, string>::const_reverse_iterator iter6 = map1.crbegin();cout << "iter6.first = " << iter6->first << "\t iter6.second = " << iter6->second << endl;//iter6->second = "strawberry";//不可以修改值// std::multimap<int, string>::reverse_iterator rit;
// for (rit = map1.rbegin(); rit != map1.rend(); ++rit)
// std::cout << rit->first << " => " << rit->second << endl;//7.rend 返回指向末尾的逆向迭代器,即第一个元素的前一个位置,可以通过迭代器修改它的值multimap<int, string>::reverse_iterator iter7 = map1.rend();--iter7;//指向第一个元素, 这里不能用++iter7cout << "iter7.first = " << iter7->first << "\t iter7.second = " << iter7->second << endl;iter7->second = "watermelon";cout << "iter7.first = " << iter7->first << "\t iter7.second = " << iter7->second << endl;//8.crend 返回指向末尾的逆向迭代器,即第一个元素的前一个位置,不能通过迭代器修改它的值multimap<int, string>::const_reverse_iterator iter8 = map1.crend();--iter8;//指向第一个元素, 这里不能用++iter8cout << "iter8.first = " << iter8->first << "\t iter8.second = " << iter8->second << endl;//iter8->second = "watermelon";//不可以修改值
}int main()
{iteratorOperator();cout << "Hello, world!" << endl;return 0;
}
运行结果:
参考:
https://zh.cppreference.com/w/cpp/container/multimap
multimap学习之迭代器操作begin,cbegin(C++11),end,cend(C++11),rbegin,crbegin相关推荐
- set学习之迭代器操作begin,cbegin,end,cend,rbegin,crbegin,rend,crend
本篇学习set迭代器操作,具体的操作函数如下: begin cbegin (C++11) 返回指向起始的迭代器 (公开成员函数) end cend (C++11) 返回指向末尾的迭代器 (公开成员函数 ...
- multimap学习之删除操作clear,erase,swap,extract,merge
本篇学习multimap删除相关的操作,具体的函数如下: clear 清除内容 (公开成员函数) erase 擦除元素 (公开成员函数) swap 交换内容 (公开成员函数) extract (C++ ...
- multimap学习之查找操作count,find,lower_bound,lower_bound,upper_bound,key_comp, value_comp
本篇学习multimap查找和观察器操作,具体的函数如下 查找 count 返回匹配特定键的元素数量 (公开成员函数) find 寻找带有特定键的元素 (公开成员函数) contains (C++20 ...
- list学习之迭代器begin, cbegin, end, cend, rbegin, crbegin, rend, crend
本篇学习list迭代器操作 begin:返回指向起始的迭代器 cbegin:返回指向起始的常量迭代器 end:返回指向末尾的迭代器 cend:返回指向末尾的常量迭代器 rbegin:返回指向起始的逆向 ...
- multimap学习之创建,初始化,赋值操作operator=, empty,size,max_size
multimap 是关联容器,含有键值对的已排序列表,其功能与map一样,唯一不同的是,它容许多个元素拥有同一键.本篇学习map的创建,初始化,赋值操作operator=, empty,size,ma ...
- unordered_multimap学习之查找操作和观察器操作count,find, contains(C++20),equal_range,hash_function, key_eq
本篇学习unordered_multimap的查找操作和观察器操作,具体函数如下: count (C++11) 返回匹配特定键的元素数量 (公开成员函数) find (C++11) 寻找带有特定键的元 ...
- C++日记——Day5:迭代器、begin()/end(),rbegin()/rend()、迭代器失效、const_iterator
迭代器简介 迭代器是一种遍历容器内元素的一种数据类型,这种数据类型感觉有点像指针,我们理解的时候可以理解为欸带起用来指向容器中某个元素. string,vector,[],很少用[],更常用的访问方式 ...
- C++11中容器迭代器操作总结
C++11中标准容器迭代器操作总结 我发现有必要对各类容器迭代器的操作做一个小小的总结,本文中的内容大多来自于<C++ Primer>(第5版)中相关章节的内容. 1.下面列 ...
- eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作
[Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...
最新文章
- Tensorflow: 保存和复原模型(save and restore)
- oracle_18c新建用户用normal登陆失败
- PyQt5 快速开发 与 实战
- 2018暑期做题部分整合
- call和apply的作用和不同
- php学习分享心得吧
- 腾讯云服务器linux系统有图形界面,腾讯云服务器如何搭建Ubuntu可视化界面?
- 【面试记录】1.给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。2.给定任意一个自然数,获取它重新排列后,下一个比它大的自然数。(Leetcode 031 下一个排列)
- Android源码分析-PackageManagerService(PMS)源码分析(三)- queryIntentActivities函数来查找activity
- uva 10158 - War(并查集)
- 著者四角号码查询_著者姓名汉语拼音与四角号码数字混合编制书次号之见
- NX二次开发-UFUN移动工程图视图UF_DRAW_move_view
- Go 基于原生的HTTP请求封装
- Android秀翻天的操作——使用协程进行网络请求
- 台湾大学林轩田教授机器学习基石课程理解及python实现----PLA
- Linux系统/etc/fstab文件损坏如何处理
- MP4 ftyp box解析
- 计算1900年1月1日到当前年份的日期之间一共有多少天
- 我花了整整24530元,才写出这篇育发防踩雷攻略
- 【转】OMG 网络验证