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++;//ok

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

后续更新中...

时间: 2024-10-05 20:00:14

C++学习基础——迭代器基础的相关文章

Java学习的一些基础笔记

classpath.;%java_home%\lib;%java_home%\lib\tools.jar;D:\Java\;java_homeD:\Program Files\Java\jdk1.8.0_51pathC:\Users\BaseKing-Sunie\AppData\Local\Code\bin;%java_home%\bin;%java_home%\jre\bin;D:\adt-bundle-windows-x86_64_20131020\sdk\tools;D:\adt-bund

JAVA学习篇--JSTL基础

JSTL是什么 JSTL(JSP Standard TagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库. 为什么要用JSTL 我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet.表达式和声明)代码用来实现相关逻辑控制.看下面程序.但这样做会带来如下问题: jsp维护难度增加;出错提示不明确,不容易调试; 分工不明确;(即jsp开发者是美工,也是程序员); 最终增加程序的开发成本; <% if (session.getAttribute(

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

学习之C#基础提高

1)一个解决方案中有多个项目时,运行解决方案时执行启动项目 卸载解决方案中的某个项目,不删除程序,只是设定项目"不可用" 2)常用快捷键: Home&End:行的最前端与最后端 PgUp&PgDn:上翻页与下翻页 Shift:配合其他键用来选中文本 Ctrl+Home&Ctrl+End:定位到文档的最前端与最末端 Insert&Over:插入与覆盖 3).net是一种多语言的平台 涉及到的概念:Framework类库 FCL       公共语言运行库C

Java快速教程--vamei 学习笔记(基础篇)

链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/14/2958654.html java快速教程第2课 方法与数据成员 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/25/2964430.html java快

MFC学习之窗口基础

WinMain函数 1.句柄(HANDLE):{ 1. 定义:资源的标识 2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作. 3句柄的分类:(按资源){ 1.图标句柄(HICON) , 2.光标句柄(HCURSOR) , 3. 窗口句柄(HWND) , 4.应用程序实列句柄(HINSTANCE). } } 2.Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序的入口函数: 窗口应用程序入口: Int WINAPI WinMain( H

Linux学习系列——零基础开始

第一部分 Linux基础命令 1.查看系统信息命令 2.Linux内核版本 Linux学习系列--零基础开始,布布扣,bubuko.com

Swift学习——Language Guide 基础

The Basics Swift is a new programming language for iOS and OS X app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift是用于开发IOS和Mac OS系统应用的新的编程语言,如果你曾经使用过C或者OC开发IOS程序,那你会发现他们和S

C#基础—迭代器(Iterator)

1.引入迭代器 记得以前经常做到一些面试题,是关于要实现迭代器必须实现什么接口?其实,在C# 1.0里我们就经常用到foreach了,所以,只要支持foreach,那么这个类型就可以使用foreach 去遍历.那如何才能支持foreach 呢? 其实,答案都知道,要实现IEnumerable 或 IEnumerable<T>.IEnumerator 接口,因为foreach 需要迭代器的支持,而IEnumerable 接口中含有返回迭代器的 GetEnumerator 方法,对此,可以查看下M