C++学习基础三——迭代器基础

迭代器分为两种:一种是iterator,另一种是const_iterator。
两者都可进行访问容器中的元素,不同之处是:
(1)const_iterator类型只能用于读取容器内的元素,不能更改其值;而iterator可以更改其值。
(2)对const_iterator类型进行解引用时,返回值是一个const值,不允许对其解引用赋值。
另外不要把const_iterator对象与const的iterator对象混淆,其不同之处是:
(1)声明const迭代器时必须初始化,一经初始化后就不能改变它的值,但是可以改变其所指对象的值。
(2)const_iterator对象可以改变其值,但是不允许改变其所指对象的值(因为对其进行解引用时,返回的是const值,不允许对其重新赋值)。

iterator类型迭代器的代码片段如下:

vector<string> vec1;
for(vector<string>::iterator iter = vec1.begin();iter != vec1.end(); iter++)
{cout<<*iter<<endl;*iter = "";//ok
}

const_iterator类型迭代器的代码片段如下:

for(vector<string>::const_iterator iter = vec1.begin();iter != vec1.end(); iter++)
{cout<<*iter<<endl;*iter = "";//error,because return value is const
}

const与const_iterator使用区别的代码片段如下:

vector<string>::const_iterator iter1 = vec1.begin();
*iter1 = "";//error, *iter1 is const
iter1++;//okconst vector<string>::iterator iter2 = vec1.begin();
*iter2 = "";//ok
iter1++;//error,cannot change const value

后续更新中...

posted on 2016-07-16 23:28 bky2016 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/calence/p/5677519.html

C++学习基础三——迭代器基础相关推荐

  1. invader的java学习第三天基础篇

    invader的java学习第三天基础篇 一.整数的取值范围表 类型名称 数据类型 所占空间 表数范围 字节型 byte 1字节 -128-127 短整型 short 2字节 +-3w(-2^15-2 ...

  2. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  3. Java自我学习第三章基础数据类型

    Java的基本数据类型(掌握) 1.整型系列 (1)byte:字节类型 占内存:1个字节 存储范围:-128~127 (2)short:短整型类型 占内存:2个字节 存储范围:-32768~32767 ...

  4. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  5. Python学习(三)基础

    一.函数与模块 定义函数: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用 ...

  6. c++学习笔记三-常见基础问题

    1.windows系统下标准输入的fd是多少? coder: windows下console没有所谓的0,1,2标准输入输出fd这样的概念.windows下的进程创建时默认是没有这些输入输出的,可以在 ...

  7. Python 基础三:基础数据类型和字符串的常用函数操作

    基础数据类型 数字int 数字主要用于计算,有加减乘除等操作,下面介绍一种使用方法 #bit_length(),将十进制数转换成二进制数的二进制数位数 v = 9 data = v.bit_lengt ...

  8. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  9. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

最新文章

  1. java人工洗牌窗口程序_求解,用JAVA写洗牌与发牌模拟程序
  2. cpu安装_CPU是AMD的,老台式电脑可以加装固态硬盘安装Win10系统吗?
  3. 使用struts2框架来实现CRUD(create、read、update、delete)
  4. Centos5.5上vsftpd安装使用
  5. Windows Phone DataBound ListBox中针对UIElement的事件绑定(Button)
  6. 【原创】A进程窗口嵌入到B进程窗口中显示
  7. Collection View Programming Guide for iOS---(四)---Using the Flow Layout
  8. 【资讯干货】2015两会报告中,与互联网有关的41条必收“干货”
  9. cve-2015-0569 安卓手机提权ROOT漏洞 分析
  10. elasticsearch virtual memory虚拟内存配置“max virtual memory areas vm.max_map_count [65530] is too low, inc
  11. ubuntu下载百度网盘文件油猴+aria2
  12. SharePoint 向多行文本类型字段插入特殊类型链接
  13. 【OpenKruise v0.9.0】新增 Pod 重启、删除防护等重磅功能
  14. 数字滤波常用方法(转)
  15. java调用日期控件_JAVA基础应用:日期时间选择控件(代码)
  16. 如何使用 Java 调取 Python、R 的训练模型?
  17. 《机器视觉算法与应用》第3章 机器视觉算法之几何基元的分割和拟合——学习笔记
  18. Gulp.js 参考手册,自动化构建利器
  19. dsm加密linux,DSM 6.2.2最新引导修改版,支持3615xs,已更新下载链接
  20. iOS蓝牙连接打印机,打印小票

热门文章

  1. AD中批量增加带密码用户
  2. 时间复杂度和空间复杂度的故事
  3. 百度地图根据经纬度计算瓦片行列号
  4. python代码 程序员编程艺术 2.1
  5. 重载赋值运算符含动态申请
  6. cocostudio 实现换行功能的label (文本区) lua
  7. 北京武耀科技cocos2dx面试题
  8. I see IC的破冰之旅
  9. MONGODB 数据库文件读取的优化
  10. 验证redis的主从复制