vector相关

include <vector>

using namespace std::vector;

vector<T> vec;

当用到迭代器(iterator)去遍历的时候,

vector<T>::iterator iter;

必须保持vec的T和iter的T保持一致

include <vector>

using namespace std::vector;

vector<std::string> vString;
for( int i = 0; i < 10; i++ ) {

	vString.push_back(  "aaa" );
}

for( vector<std::string>::iterator iter = vString.begin(); iter != vString.end(); iter++ ) {
	cout << *iter << endl;
}

  

vector::iterator既可以读取容器(vector)里的元素,也可以改变容器(vector)里的元素的值;

for( vector<std::string>::iterator iter = vString.begin(); iter != vString.end(); iter++ ) {
    *iter = "bb"
}

则vString里面的值则都为"BB";

还有一种是const_iterator,其实从字面意思就可以看出,前面有个const,则不能修改;只能用作读取。

for( vector<std::string>::const_iterator c_iter = vString.begin(); c_iter != vString.end(); c_iter++ ) {
    cout << *c_iter << endl;
}

但是不能把const_iterator对象与const的iterator对象混淆。如果声明一个const迭代器时,必须初始化迭代器。一旦初始化后,就不能改变它的值。

注意:任何改变vector长度的操作都会使已存在的迭代器失效。例如,如果在使用迭代器的过程中,在使用push_back添加元素后,就不能使用之前的迭代器继续遍历了

时间: 2024-08-26 20:44:38

vector相关的相关文章

STL中的Vector相关用法

STL中的Vector相关用法 标准库vector类型使用需要的头文件:#include <vector>. vector 是一个类模板,不是一种数据类型,vector<int>是一种数据类型. Vector的存储空间是连续的,list不是连续存储的. 1. 定义和初始化 vector< typeName > v1; //默认v1为空,故下面的赋值是错误的v1[0]=5;//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被

《coredump问题原理探究》Linux x86版7.8节vector相关的iterator对象

在前面看过了一个vectorcoredump的例子,接触了vector的iterator,可以知道vector的iterator只有一个成员_M_current指向vector某一个元素. 先看一个例子: 1 #include <vector> 2 3 void init( std::vector<int>& vec ) 4 { 5 for ( int i = 0; i < 0x10; i++ ) 6 { 7 vec.push_back( i ); 8 } 9 } 1

vector相关操作总结

#include <iostream> #include <vector> using namespace std; void print_vec(const std::vector<int>& vec) { for (auto x : vec) { std::cout << ' ' << x; } std::cout << '\n'; } int main() { vector<int> vecInt; vecI

108次练习之模拟实现STL中的Vector(一)

之前敲过很多遍的Vector就不算了,从现在开始,每次将敲过的次数记下来,直至108遍为止.(瑜伽做108遍拜日,在此借助瑜伽的思想) 为什么要敲这么多次?借助NLP中的一句话:最基础的就是最精华的! 为什么偏偏要敲108遍?借助瑜伽中108遍拜日的思想. 本文仅供个人学习,总结..... 废话不多说...开干! /* *文件说明:模拟STL的Vector相关声明及实现(第1遍) *作者:高小调 *日期:2016-12-18 *集成开发环境:Microsoft Visual Studio 201

Fisher Vector的改进

<Fisher vector学习笔记>中介绍了fisher vector相关知识,本文接着这片学习笔记,来记录论文<Improving the Fisher Kernel for Large-Scale Image Classification>中第三部分提出的对fisher vector的3种改进. 1,L2 Normalization 首先假设一幅图像的特征们X=xt,t=1...T服从一个分布p,对于Large-Scale image,根据大数定律,样本数T增大时,样本均值收

【C++ STL】Vector

1.结构 vector模塑出一个动态数组,因此,它本身是"将元素置于动态数组中加以管理"的一个抽象概念.vector将其元素复制到内部的dynamic array中.元素之间总存在某种顺序,所以vector是一种有序群集.vector支持随机存取,因此只要知道位置,可以在常数时间内存取任何一个元素.根据vector的结构可知,在末端添加或者删除元素,性能相当好,如果在前端或者中部安插或删除元素,性能就不怎么样了,因为操作点之后的元素都需要移到另一位置,而每一次移动都需要调用assign

《Effective C++》资源管理:条款22-条款24

条款22:将成员变量声明为private 讲解这个条款的思路是,首先看看成员变量为什么不应该是public,这个观点同样适用于protected成员变量,最后得出结论:成员变量应该是private. 首先从语法一致性开始(条款18),如果成员变量不是public,那么客户访问该成员的唯一方法就是通过成员函数(如果没有友函数).如果public接口内的每样东西都是函数,客户在使用这个对象时,就不需要疑问到底是访问变量还是函数了,因为这个时候不能访问成员变量. 或许一致性不是令你信服的理由.还有一个

Java数据结构漫谈-Stack

Stack(栈)是一种比较典型的数据结构,其元素满足后进先出(LIFO)的特点. Java中Stack的实现继承自Vector,所以其天然的具有了一些Vector的特点,所以栈也是线程安全的. class Stack<E> extends Vector<E> { 事实上,除了继承自Vector的那些方法之外,Stack只提供了5个方法: public E push(E item) { addElement(item); return item; } public synchroni

《Effective C++》学习笔记——条款23

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 四.Designs and Declarations Rule 23:Prefer non-member non-friend fuctions to member functions 规则 23:宁以  non-member . non-friend 替换 m