本篇学习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相关推荐

  1. set学习之迭代器操作begin,cbegin,end,cend,rbegin,crbegin,rend,crend

    本篇学习set迭代器操作,具体的操作函数如下: begin cbegin (C++11) 返回指向起始的迭代器 (公开成员函数) end cend (C++11) 返回指向末尾的迭代器 (公开成员函数 ...

  2. multimap学习之删除操作clear,erase,swap,extract,merge

    本篇学习multimap删除相关的操作,具体的函数如下: clear 清除内容 (公开成员函数) erase 擦除元素 (公开成员函数) swap 交换内容 (公开成员函数) extract (C++ ...

  3. multimap学习之查找操作count,find,lower_bound,lower_bound,upper_bound,key_comp, value_comp

    本篇学习multimap查找和观察器操作,具体的函数如下 查找 count 返回匹配特定键的元素数量 (公开成员函数) find 寻找带有特定键的元素 (公开成员函数) contains (C++20 ...

  4. list学习之迭代器begin, cbegin, end, cend, rbegin, crbegin, rend, crend

    本篇学习list迭代器操作 begin:返回指向起始的迭代器 cbegin:返回指向起始的常量迭代器 end:返回指向末尾的迭代器 cend:返回指向末尾的常量迭代器 rbegin:返回指向起始的逆向 ...

  5. multimap学习之创建,初始化,赋值操作operator=, empty,size,max_size

    multimap 是关联容器,含有键值对的已排序列表,其功能与map一样,唯一不同的是,它容许多个元素拥有同一键.本篇学习map的创建,初始化,赋值操作operator=, empty,size,ma ...

  6. unordered_multimap学习之查找操作和观察器操作count,find, contains(C++20),equal_range,hash_function, key_eq

    本篇学习unordered_multimap的查找操作和观察器操作,具体函数如下: count (C++11) 返回匹配特定键的元素数量 (公开成员函数) find (C++11) 寻找带有特定键的元 ...

  7. C++日记——Day5:迭代器、begin()/end(),rbegin()/rend()、迭代器失效、const_iterator

    迭代器简介 迭代器是一种遍历容器内元素的一种数据类型,这种数据类型感觉有点像指针,我们理解的时候可以理解为欸带起用来指向容器中某个元素. string,vector,[],很少用[],更常用的访问方式 ...

  8. C++11中容器迭代器操作总结

    C++11中标准容器迭代器操作总结 我发现有必要对各类容器迭代器的操作做一个小小的总结,本文中的内容大多来自于<C++ Primer>(第5版)中相关章节的内容.        1.下面列 ...

  9. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作

    [Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...

最新文章

  1. Tensorflow: 保存和复原模型(save and restore)
  2. oracle_18c新建用户用normal登陆失败
  3. PyQt5 快速开发 与 实战
  4. 2018暑期做题部分整合
  5. call和apply的作用和不同
  6. php学习分享心得吧
  7. 腾讯云服务器linux系统有图形界面,腾讯云服务器如何搭建Ubuntu可视化界面?
  8. 【面试记录】1.给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。2.给定任意一个自然数,获取它重新排列后,下一个比它大的自然数。(Leetcode 031 下一个排列)
  9. Android源码分析-PackageManagerService(PMS)源码分析(三)- queryIntentActivities函数来查找activity
  10. uva 10158 - War(并查集)
  11. 著者四角号码查询_著者姓名汉语拼音与四角号码数字混合编制书次号之见
  12. NX二次开发-UFUN移动工程图视图UF_DRAW_move_view
  13. Go 基于原生的HTTP请求封装
  14. Android秀翻天的操作——使用协程进行网络请求
  15. 台湾大学林轩田教授机器学习基石课程理解及python实现----PLA
  16. Linux系统/etc/fstab文件损坏如何处理
  17. MP4 ftyp box解析
  18. 计算1900年1月1日到当前年份的日期之间一共有多少天
  19. 我花了整整24530元,才写出这篇育发防踩雷攻略
  20. 【转】OMG 网络验证

热门文章

  1. 非阻塞的connect使用方式
  2. 现在还有多少java程序员是40岁以上的,他们都干嘛去了?
  3. 【网络工程】6、防火墙介绍及配置实操
  4. 用户权限管理表结构实现user role menu user_role ,role_menu表
  5. Linux-文件搜索命令及帮助命令
  6. 行内块元素加了文字会被挤下来的原因及解决方法。
  7. execution()表达式
  8. javascript实现在线拼音输入法
  9. Java中Jaxb的使用
  10. 2021年安全月宣教用品