vector容器中iterator的使用
2017-07-24 15:43
211 查看
问题
该代码是错误的,for循环是错误的。
正确的应该为
分析
前者通过查看源码发现,在vector的定义中,
所以size_type是个无符号类型的。而无符号类型的整数永远都大于等于0的。所以前者的for循环没有限制条件,程序一直运行下去,直到程序奔溃。而后者的for循环有限制条件,当i= 0 时程序结束循环。
vector <int> array; array.push_back(1); array.push_back(2); array.push_back(3); for(vector<int>::size_type i=array.size()-1;i>=0;i--) { cout<<array[i]<<endll; }
该代码是错误的,for循环是错误的。
正确的应该为
for(vector<int>::size_type i = array.size();i>0;i--) { cout<<array[i-1]<<endl; }
分析
前者通过查看源码发现,在vector的定义中,
typedef A::size_type size_type; 而_A是allocator<_Ty>,所以查看allocator的定义发现, typedef _SIZT size_type; 而 _SIZT的定义为: #define _SIZT size_t typedef unsigned int size_t;
所以size_type是个无符号类型的。而无符号类型的整数永远都大于等于0的。所以前者的for循环没有限制条件,程序一直运行下去,直到程序奔溃。而后者的for循环有限制条件,当i= 0 时程序结束循环。
相关文章推荐
- 用vector向量容器装入10个整数,使用迭代器iterator和accumulate算法统计这10个元素的和
- 容器vector和迭代器iterator的学习使用
- vector的iterator的错误使用
- Java 中Iterator 、Vector、ArrayList、List 使用深入剖析
- C++之STL(三):迭代器类vector::iterator 和 vector::reverse_iterator 的实现、迭代器类型、常用的容器成员
- vector容器使用
- C/C++中容器vector使用方法<第一弹>
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- Java中Iterator 、Vector、ArrayList、List 使用深入剖析
- C++ STL中vector(向量容器)使用简单介绍
- vector容器使用总结 .xml
- C++面试题:看代码找错—vector容器的使用
- cocos2dx的模板容器简单使用(Vector,Map,Value)
- 4.1.6(2)std::vector容器的使用
- c++ 模板参数做容器参数迭代器报错 vector<T>::const_iterator,typename const报错
- map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用
- 浅谈容器Vector ,话说ValueMap的一般使用。Cocos2dx 3.0 过渡篇
- 使用C++的map容器遇到的bug(map/set iterator not dereferencable)
- c++容器(vector|map)中使用函数指针
- 熟悉STL顺序容器的使用之vector