vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组。
vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存。
对于vector容器的容量定义,可以事先定义一个固定大小,然后可以随时调整其大小;也可以事先不定义,随时使用push_back()方法从尾部扩张元素,也可以使用insert()在某个元素位置前面插入新元素。
vector容器有两个重要的方法,begin()和end()。begin()返回的是首元素位置的迭代器,end()返回的是最后一个元素的下一个元素位置的迭代器。
创建vector对象
创建vector对象的时候,可以不带参数,带一个参数,带两个参数:
(1)不指定容器的元素的个数(不带参数)
vector v;(2)指定容器的大小(带一个参数,表示容器的大小)
vector(3)创建一个具有n个元素的向量容器对象,每个元素具有指定的初值(带两个参数,分别表示容器的大小和每个元素的初值)v(10);
vector v(10,0);
尾部元素扩张
通常使用push_back()对vector容器在尾部追加新元素。尾部追加元素,vector容器会自动分配新内存空间。
#include上面的代码表示:将1,2,3三个元素从尾部添加到v容器中,现在容器的长度为3,三个元素分别是1,2,3using namespace std;int main(){ vector v; v.push_back(1); v.push_back(2); v.push_back(3); return 0; }
下表方式访问vector元素
可以像数组一样使用下标访问vector中的元素
#include程序输出:1 10 3#include using namespace std;int main(){ vector v; v.push_back(1); v.push_back(2); v.push_back(3); cout< <
使用迭代器访问vector元素
常使用迭代器配合循环语句对vector对象进行遍历访问,迭代器的类型一定要与它要遍历的vector对象的元素类型一致。
#include#include using namespace std;int main(){ vector v; v.push_back(1); v.push_back(2); v.push_back(3); vector ::iterator it; for(it=v.begin();it
元素的插入
insert()方法可以在vector对象的任意位置前插入一个新的元素,同时,vector自动扩张一个元素空间,插入位置后的所有元素依次向后挪动一个位置。
要注意的是:inert()方法要求插入的位置是元素的迭代器的位置,而不是元素的下标。
insert(iterator,value)函数有两个参数,第一个是迭代器的位置,第二个是插入的数据的值。
#include输出结果是:8 1 9 2 3 10#include using namespace std;int main(){ vector v; v.push_back(1); v.push_back(2); v.push_back(3); vector ::iterator it=v.begin(); v.insert(v.begin(),8); v.insert(v.begin()+2,9); v.insert(v.end(),10); for(it=v.begin();it
向量的大小和元素的删除
erase()方法可以删除vector中迭代器所致的一个元素或者一段区间中的所有元素,如果带有一个参数,则删除对应迭代器位置的元素,如果对应的是两个参数,则删除的是第一个迭代器到第二个迭代器之间(包括第一个迭代器位置,不包括第二个迭代器位置)的元素,删除元素之后,后面的元素会提到前面去,将其覆盖。
clear()方法则一次性删除了vector中的所有的元素。
size()方法可以返回向量的大小,即元素的个数。
empty()方法可以返回向量是否为空(空则返回真,非空返回假)
#include#include using namespace std;int main(){ vector v; for(int i=0;i<10;i++) { v.push_back(i); } cout<<"size:"< <