STL系列:vector容器
来源:互联网 发布:ps调色插件 mac 编辑:程序博客网 时间:2024/05/10 02:57
一个容器中的所有对象都必须是同一种类型的。
vector 头文件 :<vector>
vector是一个类模板(class template)。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。
- 注意:
vector不是一种数据类型,vector<int>和vector<string>都是数据类型。
1、定义与初始化:
</pre><pre name="code" class="cpp">vector<T> v1;//vector保存类型为T的对象,默认构造函数,v1为空vector<T> v2(v1);//v2是v1的一个副本vector<T> v3(n, i);//v3包含n个值为i的元素vector<T> v4(n);//v4含有值初始化的元素的n个副本
2、动态增长:
vector对象(以及其他标准库容器对象)的重要属性就在于可以在运行时高效地添加元素。虽然可以对给定元素个数的vector对象预先分配内存,但更有效的方法是先初始化一个空vector对象,然后再动态地增加元素。
3、常用vector操作:
函数
表述
c.assign(beg,end)
c.assign(n,elem)
将[beg; end)区间中的数据赋值给c。
将n个elem的拷贝赋值给c。
c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back()
传回最后一个数据,不检查这个数据是否存在。
c.begin()
指向迭代器中的第一个数据地址。
c.capacity()
返回容器中数据个数。
c.clear()
移除容器中所有数据。
c.empty()
判断容器是否为空。
c.end()
指向迭代器中的最后一个数据地址。
c.erase(pos)
c.erase(beg,end)
删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。
c.front()
传回第一个数据。
get_allocator
使用构造函数返回一个拷贝。
c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)
在pos位置插入一个elem拷贝,传回新数据位置。
在pos位置插入n个elem数据。无返回值。
在pos位置插入在[beg,end)区间的数据。无返回值。
c.max_size()
返回容器中最大数据的数量。
c.pop_back()
删除最后一个数据。
c.push_back(elem)
在尾部加入一个数据。
c.rbegin()
传回一个逆向队列的第一个数据。
c.rend()
传回一个逆向队列的最后一个数据的下一个位置。
c.resize(num)
重新指定队列的长度。
c.reserve()
保留适当的容量。
c.size()
返回容器中实际数据的个数。
c1.swap(c2)
swap(c1,c2)
将c1和c2元素互换。
同上操作。
vector<Elem> c
vector <Elem> c1(c2)
vector <Elem> c(n)
vector <Elem> c(n, elem)
vector <Elem> c(beg,end)
c.~ vector <Elem>()
创建一个空的vector。
复制一个vector。
创建一个vector,含有n个数据,数据均已缺省构造产生。
创建一个含有n个elem拷贝的vector。
创建一个以[beg;end)区间的vector。
销毁所有数据,释放内存。
仅能对确知已存在的元素进行下标操作
vector<int> ivec; // empty vectorfor (vector<int>::size_type ix = 0;ix != 10; ++ix)ivec[ix] = ix; //disaster: ivec has noelements// ivec.push_back(ix);
4、迭代器(iterator)
迭代器是一种检查容器内元素并遍历元素的数据类型。迭代器对所有的容器都适用,现代C++程序更倾向于使用迭代器而不是下标操作访问容器元素。若一种类型支持一组确定的操作(这些操作可用来遍历容器内的元素,并访问这些元素的值),我们就称这种类型为迭代器。
vector<int>::iterator iter;
由end操作返回的迭代器并不指向vector中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完vector中所有元素。
迭代器类型可以使用解引用操作符(*)来访问迭代器所指向的元素;不能对end操作进行解引用或自增操作。
5、const_iterator
该类型只能用于读取容器内元素,但不能改变其值。
不要把const_iterator对象与const的iterator对象混淆起来。声明一个const迭代器时,必须初始化迭代器,一旦被初始化后,就不能改变它的值。
//an iterator that cannot write elementsvector<int>::const_itetator//an iterator whose value cannot changeconst vector<int>::iterator
任何改变vector长度的操作都会使已存在的迭代器失效。
6、迭代器的算术操作:
iter + n
iter – n
iter1 – iter2
但没有iter1 + iter2
vector<int>::iterator mid =(vi.begin() + vi.end())/2;//error
- STL系列:vector容器
- STL系列之vector(容器)
- STL系列(2):Vector 向量容器
- STL系列之deque双端队列+vector向量容器
- STL vector 容器实现
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- Memcached源码解析--多线程网络模型
- session的生命周期
- 默认参数 的顺序
- 数据完整性的分类
- HDU-4435-charge-station ( 2012 Asia Tianjin Regional Contest )
- STL系列:vector容器
- android的动画之Tween动画
- UVA10673 - Play with Floor and Ceil(数论)
- C++编程错误
- 小白系列-免费广告路由器web认证设置(1)
- HDU 1285 确定比赛名次
- 新驻入CSDN博客
- ssl流程
- 27_加载大图片到内存