标准库vector类型
来源:互联网 发布:php undefined index 编辑:程序博客网 时间:2024/05/21 10:25
vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引。和string一样,标准库将负责管理与存储元素的内存。我们把vector称为容器,vector是一个类模板,在声明的时候必须指明容器要保存的类类型。vector不是一种数据类型,而只是一个类模板,可用来定义多种数据类型,例如:vector<int> 和vector<string> 都是数据类型。
1.vector对象的定义和初始化
(1).创建确定个数的元素
vector<int> ivec1;
vector<int> ivec2(ivec1);
vector<string> svec(ivec1);//这是错误的,必须是同类型的,才能这样初始化
vector<int> ivec4(10, -1);
vector<int> svec(10, "hi!");
vector对象可以高效的添加元素,不像c和java在初始化的时候,最好分配好内存。在c++中最好是初始化一个空的vector然后在使用中动态的增加vector元素,而且是非常高效的。
(2).值初始化
如果没有指定初始化式,那么标准库将自行提供一个元素初始值进行值初始化。例如:
vector<int> fvec(10);
vector<string> svec(10);//初始化为空字符串
2.vector对象的操作
v.empty()
v.size()
v.push_back(t)
v[n]
v1 = v2
v1 == v2
!=, <, <=, >, >=
(1).vector对象的size
vector<int>::size_type
vector::size_type;//error
(2).像vector添加元素
向vector容器中添加元素使用push_back()函数,来实现。
(3).vector的下标
vector的下标操作只能用来读写现有的元素个数的值,不能添加元素。
注意:
有关安全的泛型编程:
在for循环中使用!=而不使用<的操作。
3.迭代器的介绍
除了使用下标访问vector之外,也可以使用迭代器访问vector。迭代器:iterator,是检查容器内容元素并遍历元素的数据类型。
每种容器定义了自己的迭代器类型,例如:
vector<int>::iterator iter;
(1).begin和end操作
每种容器定义了一对命名为begin和end的操作,用于返回迭代器。如果容器中包含有元素的话,begin()返回第一个元素的迭代器,end()返回最后一个元素的下一个位置,又叫超出末端迭代器。 如果容器为空的话,则begin和end指向同一个位置。
(2).迭代器的自增和解引用
*iter;//解引用
(3).const_iterator
一般情况下,可以使用迭代器访问容器内容的时候,可以更改容器元素的内容,但是const_iterator只能读取,而不能更改容器元素。
注意:const_iterator 和 const的iterator是不同的两个概念。
(4).迭代器的算术操作
iter+n;
iter-n;
迭代器的加减的数n是vector的size_type或者difference_type;
iter1-iter2;//返回类型为vector的difference_type。
- 标准库vector类型
- 标准库vector类型
- 标准库vector类型
- 标准库vector类型
- 标准库Vector类型
- 标准库vector类型
- 标准库 vector 类型
- 标准库vector类型
- 标准库类型vector
- 标准库vector类型
- 标准库类型<vector>
- 标准库vector类型
- 标准库类型vector
- 标准库 vector 类型
- 标准库类型vector
- 标准库类型vector
- 标准库 vector 类型
- 标准库类型vector
- ORA-00959 表空间不存在
- 关于sql
- 深度剖析 Linux0.11 系统中堆栈的使用方法
- 一个ST_Geometry效率的问题
- JDBC连接SqlServer2008图解:桥连
- 标准库vector类型
- 输出1~1000之内所有的非素数
- Java5线程池潜规则研究
- URL的井号
- 关于mysql错误:Illegal mix of collations for operation '='的理解
- Java数组练习
- hdu 3491 Thieves
- struts2实现文件上传(验证过!)
- Android创建sdcard