STL 序列容器之vector
来源:互联网 发布:冲田杏梨seo 681 编辑:程序博客网 时间:2024/06/05 02:09
参考资料:http://www.cplusplus.com/reference/vector/
一、常用API
1,构造函数
std::vector<int> first;
std::vector<int> second (4,100); // (100,100,100,100)
std::vector<int> third (second.begin(),second.end());
std::vector<int> fourth (third);
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) ); //(16,2,77,29)
2,赋值函数assign
first.assign(5,100); //(100,100,100,100,100)
first.assign(it+1, second.end()-1); //[start, end) (100,100)
first.assign(myints, myints + sizeof(myints) / sizeof(int)) //(16,2,77,29)
3,获取|赋值某个索引位置的值
first.at(index)=value
first.at(index) 类型[]运算符,但at会进行越界检查,而[]运算符不会检查,会直接返回其地址值
int *p = myvector.data() ; 返回vector数组的指针,可直接存储或者访问其元素。
因为vector元素连续存储,可进行偏移指针p++等操作 *p=10; ++p; p[2]=20;
myvector.fron() 获取vector中第一个元素
myvector.back() 获取vector中最后一个元素
4,插入操作
emplace(iterator, value) 在指定位置插入新元素以扩展容器(效率低,插入时后面的元素会依次往后移动)
emplace_back(value) 在容器末尾添加元素
insert(iterator, value) insert(iterator, n, value) 迭代器指定位置插入指定值; 插入指定数量的指定值
insert(iterator, first, last) 插入容器或者数组的指定的范围
push_back(value) 容器末尾插入指定值
5,迭代器
【begin() & end()】【rbegin() & rend()】
std::vector<int>::iterator it ; std::vector<int>::reverse_iterator rit
vector<int>::iterator it=myvector.begin(); begin()指向第一个元素
it != myvector.end(); end()指向最后一个元素的后一个位置
【cbegin() & cend()】【crbegin() & crend()】
std::vector<int>::const_iterator cit ; std::vector<int>::reverse_const_iterator critfor(auto it=myvector.begin(); it != myvector.end(); ++it)
for(myvector<int>::const_iterator it=myvector.begin(); it != myvector.end(); ++it)
PS:编译时,需带-std=c++0x
6,存储空间的大小
size()是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器。
capacity()是指在发生realloc前能允许的最大元素数,即预分配的内存空间。
相应的,
使用resize(len),容器内的对象内存空间是真正存在的。
使用reserve(len)仅仅只是修改了capacity的值,容器内的对象并没有真实的内存空间(空间是"野"的)。
(PS:resize(len, val); resize(len) 若原先长度大于len,则截断;若小于,则默认用0补足,否则用指定val补足)
max_size() 返回vector容器能容纳元素的最大数量
empty() 判断vector是否为空,空返回true,否则true
7,删除操作
clear() 删掉vector中所有元素,使size为0
erase(position) erase(iter_start, iter_end) 参数为迭代器类型
for(vector<int>::iterator it=v.begin(); it!=v.end();++it) v.erase(*it) --删除it后,it指向被删除的后一个元素
pop_back() 删除vector的最后一个元素
8,交换操作
v1.swap(v2) 交换v1,v2两个vector的元素
- STL 序列容器之vector
- STL序列容器之vector
- STL中序列容器之Vector
- stl之序列容器——vector
- STL序列式容器之vector
- STL六大组件之容器篇(序列式容器vector)
- C++ STL 序列性容器之 std::vector 容器
- 【STL】序列式容器:vector
- 【STL】序列式容器--vector
- STL容器之vector
- STL容器之 vector
- STL之vector容器
- STL容器之vector
- STL容器之vector
- STL 之 vector 容器
- STL之vector容器
- STL容器之vector
- STL容器之vector
- ElasticSearch(一):介绍及安装
- android-目录学习
- 2016技术
- 经常使用的一些Maven dependency
- JQuery Mobile
- STL 序列容器之vector
- Leetcode 14. Longest Common Prefix
- DLP测试样本
- ElasticSearch(二):集群管理工具elasticsearch-head
- ffmpeg常用基本命令(转)
- kafka之四 consumer 解析
- Python 操作MySql数据库
- ElasticSearch(三):增删改查
- 【c基础】之 文件及其操作