C++11中容器迭代器操作总结
C++11中标准容器迭代器操作总结
我发现有必要对各类容器迭代器的操作做一个小小的总结,本文中的内容大多来自于《C++ Primer》(第5版)中相关章节的内容。
1.下面列出了容器迭代器支持的所有的操作(注意:forward_list迭代器不支持递减运算符(--))。
*iter 返回迭代器iter所指元素的引用
iter->mem 解引用iter并获取该元素名为mem的成员,等价于(*iter).mem
++iter 令iter指示容器中的下一个元素
--iter 令iter指示容器中的上一个元素
iter1 == iter2 判断两个迭代器是否相等(不相等),如果两个迭代器指示的是同一个
iter1 != iter2 元素或者它们是同一个容器的尾后迭代器,则相等;反之,不相等。
2.下面的运算只能用于string,vector,deque和array的迭代器。不能将它们用于其他任何容器类型的迭代器!!
iter + n 迭代器加上一个整数值仍得到一个迭代器,迭代器指示的新位置与原来相比向前移动了若干元 素。结果迭代器或者指示容器内的一个元素,或者指向容器尾的下一个位置
iter - n/iter += n/iter -=n 这三操作意思和上面差不多。。
iter1 - iter2 两个迭代器相减的结果是它们之间的距离,参与运算的两个迭代器必须指向的是同一个容器中 的元素或者尾元素后的位置
>、>=、<、<= 迭代器的关系运算符,如果某迭代器指向的容器位置在另一个迭代器所指位置之前,则说明前 者小于后者。参与运算的两个迭代器必须指向的是同一个容器中的元素或者尾元素后的位置
3.对于不同容器类型的迭代器,简单来说
顺序容器:
string、vector、deque和array 支持++、--、+n、-n.
forwar_list 支持++,然鹅不支持+n、-n、--.
list 支持++、--,然鹅不支持+n、-n.
关联容器:
set、map、multiset、multimap 支持++、--,然鹅不支持+n、-n.
unordered_set、unordered_map、unordered_multiset、unordered_multimap 支持++、--,然鹅不支持+n、-n.
注意:本文中的单独出现的++、--符号均包含了前置后置两种情况。
C++11中容器迭代器操作总结相关推荐
- 第十三篇:multimap容器和multiset容器中的find操作
前言 multimap容器是map容器的" 增强版 ",它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容 ...
- STL中容器vector迭代器失效的相关问题
迭代器失效,有两个层面的意思: 无法通过迭代器++,–操作遍历整个stl容器.记作: 第一层失效. 无法通过迭代器存取迭代器所指向的内存. 记作: 第二层失效. vector是个连续内存存储的容器,如 ...
- STL 容器和迭代器连载6_顺序容器的操作3
2019独角兽企业重金招聘Python工程师标准>>> /*- ========================================================== ...
- 容器安全 - 通过SECCOMP过滤在容器中的风险操作
<OpenShift 4.x HOL教程汇总> 文章目录 通过SECCOMP过滤在容器中的风险操作 参考 通过SECCOMP过滤在容器中的风险操作 查看podman当前有关SECCOMP的 ...
- multimap学习之迭代器操作begin,cbegin(C++11),end,cend(C++11),rbegin,crbegin
本篇学习multimap的迭代器操作,具体的函数有如下: begin cbegin (C++11) 返回指向起始的迭代器 (公开成员函数) end cend (C++11) 返回指向末尾的迭代器 (公 ...
- C++11中std::forward_list单向链表的使用
std::forward_list是在C++11中引入的单向链表或叫正向列表.forward_list具有插入.删除表项速度快.消耗内存空间少的特点,但只能向前遍历.与其它序列容器(array.vec ...
- C++/C++11中std::string用法汇总
C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...
- C++11中值得关注的几大变化 .
Lambda 表达式 Lambda 表达式的形式是这样的: view plaincopy to clipboardprint? [capture](parameters)->return-typ ...
- C++11中值得关注的几大变化
赖勇浩(http://laiyonghao.com) 声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的<The Biggest Changes in C++11( ...
最新文章
- 使用OneFlow搭建神经网络
- nginx的优先匹配规则
- Tomcat常见问题 (配置)及解决方法
- 【IM】关于迁移学习的理解
- Centos7环境安装Kibana5.2.2
- 七夕单日票房破5亿!创复工后单日票房新高
- html图片多tab切换代码,CSS实现Tab页切换实例代码
- 12864 C语言程序 带详细注解
- TensorFlow实现图像风格迁移
- Win10(winser2019)关闭驱动数字签名方法
- 项目管理 - 常用英语词汇一
- 《论语》与《资本论》
- [unix] Unix 是简单的,你不需要成为一个天才或是计算机专家也能理解它!
- rj45接口引脚定义_RJ45插座工作原理及接口定义分析
- 剑指offer:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
- Windows系统安全检查脚本
- python 波动率锥_期权波动率期限结构与日历价差策略
- 中国丙泊酚行业竞争与投资前景研究报告(2021版)
- SpringBoot整合腾讯云COS对象存储实现文件上传
- android biz,魔轮(lcb.android.biz) - 2.6.7 - 应用 - 酷安
热门文章
- 什么是锁PHP,PHP简单分布式锁-PHP中的锁
- 红米k30pro工程测试代码_红米K30 PRO代号曝光,确定推出双版本,更强拍照对标荣耀30...
- python高性能_Python高性能分布式执行框架-Ray
- TTL怎么计算拉电流和灌电流_预付费电表工作原理 是怎么实现断电功能
- wordpress直接处理$_post_实战:Drupal迁移到WordPress
- sql查询百分之20到百分之40的数据_FOCUS数据管理之ETL监控
- swift 抛出错误_Swift错误处理– Swift尝试,捕捉,抛出
- angularjs 实例_AngularJS服务示例教程
- Android Wear Hello World
- Python Parse JSON –转储,加载