码迷,mamicode.com
首页 > 编程语言 > 详细

C++一些标准模板容器简要介绍(2)

时间:2015-07-20 16:54:21      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:迭代器

继续上一篇来说:


    1.对于const_iterator来说,我们不能改变它所指向的容器的值,但是我们可以改变const_iterator本身的值。

    

vector<int> vec1(10,3);
vector<int>::const_ieterator Myiter = vec1.begin();
*Myiter = 2; //error; const_iterator解引用之后是一个常量,
++Myiter; // ok


    2.需要区别const_iterator对象和const的iterator对象。

        const_iterator是指,我们不能使用const_iterator的解引用来改变容器元素的值

        const的iterator对象是指:iterator对象本身不能改变,但是可以通过解引用修改iterator指向的对象的值。

    

	vector<int> vec1;
	vec1.push_back(1);
	vec1.push_back(3);
	vec1.push_back(3);
	const vector<int>::iterator it1 = vec1.begin();//const的iterator对象一定要初始化。
	
	++it1; //error,const对象不能修改
	
	*it1 = 100;  //ok, it1是常量但是可以值他所指向的值进行修改。
	



    3.迭代器的算术操作:

        (1)可以对iterator对象加上或者减去n(n必须是整型值),其中n是size_type或者difference_type类型。加上n或者减去n,都必须保证运算之后的迭代器在容器返回之内,即begin()和end()函数之间。


        (2)iter1 - iter2 ,该运算的结果是两个迭代器对象之间的距离。该操作的结果可能是正值,可能是负值,也可能是0。该运算的结果的类型是difference_type类型的signed类型。并且这两个迭代器对象必须指向同一个容器,也可以指向容器的末端之后的下一个元素(end()函数的返回值)。


        (3)任何改变容器元素个数的操作都会使容器的迭代器失效。所以,我们一般在使用容器的时候,都是使用迭代器去判断容器是否遍历结束。不推荐使用一个整型值保存容器的长度来判断容器是否遍历结束。

本文出自 “家和万事兴” 博客,请务必保留此出处http://louis1126.blog.51cto.com/2971430/1676328

C++一些标准模板容器简要介绍(2)

标签:迭代器

原文地址:http://louis1126.blog.51cto.com/2971430/1676328

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!