vector:
1.vector是表示可变大小数组的序列容器,与数组类似;
2.vector中的元素相继存储,意味着可以采用下标对vector的元素进行访问,和数组一样高效,但是不同于数组,vector的大小是可以动态改变的。
3.vector的存储是自动管理的,按需扩张收缩。vector通常占用多于静态数组的空间,因为要分配更多的内存以管理将来的增长,vector所用的方式不是在每次插入元素时,而只在额外内存耗尽时重分配。分配的内存总量可用capacity()函数查询
vector上的常见操作复杂度:
随机访问------常数O(1)
在末尾插入或移除元素------均摊常数O(n)
插入或移除元素------与到vector结尾的距离呈线性O(n)
头文件:
元素访问
at 访问指定的元素,同时进行越界检查
operator[] 访问指定的元素,不进行越界检查
front 访问第一个元素
back 访问最后一个元素
data 返回指向内存中数组第一个元素的指针
迭代器
begin 返回指向容器中第一个元素的迭代器
cbegin 返回指向容器中第一个元素(常量)的迭代器
end 返回指向容器中最后一个元素的下一个迭代器
cend 返回指向容器中最后一个元素(常量)的下一个迭代器
容量
empty 检查容器是否为空
size 返回容纳的元素数
max_size 返回可容纳的最大元素数
capacity 返回当前存储空间能够容纳的元素数
修改器
clear 清除内容
insert 插入元素
erase 擦除元素
push_back 将元素添加到容器末尾
pop_back 移除末元素
resize 改变容器中可存储元素的个数
swap 交换内容
#include<iostream>
#include<vector>
using namespace std;
int mian()
{
vector<int> vec;
cout << vec.size() << endl;
cout << vec.capacity() << endl;
if(vec.empty())
cout << " empty!" << endl;
vec.push_back(1);
cout << "size: " << vec.size() << endl;
cout << "capacity:" << vec.capacity() << endl;
vec.push_back(5);
cout << "size: " << vec.size() << endl;
cout << "capacity:" << vec.capacity() << endl;
vec.push_back(3);
cout << "size: " << vec.size() << endl;
cout << "capacity:" << vec.capacity() << endl;
vec.push_back(4);
cout << "size: " << vec.size() << endl;
cout << "capacity:" << vec.capacity() << endl;
vec.push_back(2);
cout << "size: " << vec.size() << endl;
cout << "capacity:" << vec.capacity() << endl;
vector<int>::const_interaor p;
for(p = vec.begin();p!=vec.end();p++)
cout << *p << endl;
for(int i = 0;i < vec.size();i++)
cout << vec[i] << endl;
return 0;
}
参考cppreference