简介:
vector是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。
特点:
拥有一段连续的内存空间,并且起始地址不变,因此它能
非常好的支持随机存取(即中括号),但由于它的内存空
间是连续的,所以在中间进行插入和删除会造成内存块的
拷贝,另外,当该数组后的内存空间不够时,需要重新申
请一块足够大的内存并进行内存的拷贝。这些都大大影响
了 vector的效率。
对头部和中间进行插入删除元素操作需要移动内存,
如果你的元素是结构或类,那么移动的同时还会
进行构造和析构操作,所以性能不高。
在后面插入删除元素最快,此时一般不需要移动内存,只有保留内存不够时才需要。
声明方法:
vector<每个元素类型> 名称;
//多维声明
vector<vector<每个元素类型>> 名称; //二维
vector<vector<vector<每个元素类型>>> 名称; //三维
......
引用数据方法:
与数组相同,使用中括号。
各函数用法:
push_back()
插入一个元素到向量后面
insert()
插入元素到向量的指定位置
insert()
插入n个相同的元素到指定位置
insert()
将另一个向量从头指针的位置开始到尾指针的位置结束(不包括end)之间的内容插入该向量的指定位置
erase()
删除指定位置的元素
erase()
删除向量[位置1,位置2)中的元素
pop_back()
弹出(删除)向量的最后一个元素
clear()
清除向量所有元素,size()变为0
front()
取向量第一个元素
back()
取向量最后一个元素
begin()
返回向量头指针 (迭代器),指向第一个元素
end()
返回向量尾指针,指向向量最后一个元素的下一个位置
rbegin()
反向迭代器,指向最后一个元素
rend()
反向迭代器,指向第一个元素之前的位置
size()
返回向量中实际元素的个数
resize()
重新设定向量的大小,也就是可以保存元素的个
max_size()
得到 vector 最大可以是多大。
empty()
判断向量是否为空,等价于 size()为0
swap()
交换两个同类型向量的数据