一、简介

    Vector就是线性数组的一种抽象和泛化,它也是由具有线性次序的一组元素构成的集合。

二、vector类的成员函数

1. 增加

(1)从最后添加

vector<char> alphabet;
alphabet.push_back('A');

// 或者 alphabet.emplace_back('A');

(2)从某个位置插入

alphabet.insert(alphabet.begin(),'B');

//或者alphabet.emplace(alphabet.begin(),'B');

// alphabet:
// {'B', 'A'}

这里第一个参数是vector的指向容器的第一个元素的迭代器(其实可以理解为虚拟地址),在这个上面可以增+1,+2等等,来从第1个,第1个位置插入。

2. 删除

alphabet.erase(alphabet.begin()+1);

// alphabet:
// {'B'}

3. 访问与修改

C++的Vector重载了[]运算符,使得vector能够像数组一样方便的访问某一个下标的值。同时能够直接重新赋值修改元素

cout<<alphabet[0]<<endl;

// output:
// B

4. 其他成员函数

函数成员

函数功能

size()

返回实际元素个数。

push_back()

在序列的尾部添加一个元素。

emplace_back()

在序列尾部生成一个元素。

insert()

在指定的位置插入一个或多个元素。

emplace()

在指定的位置直接生成一个元素。

erase()

移出一个元素或一段元素。

empty()

判断容器中是否有元素,若无元素,则返回 true;反之,返回 false。

begin()

返回指向容器中第一个元素的迭代器。

end()

返回指向容器最后一个元素所在位置后一个位置的迭代器,通常和 begin() 结合使用。

rbegin()

返回指向最后一个元素的迭代器。

rend()

返回指向第一个元素所在位置前一个位置的迭代器。

cbegin()

和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。

cend()

和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。

crbegin()

和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。

crend()

和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。

max_size()

返回元素个数的最大值。这通常是一个很大的值,一般是 232-1,所以我们很少会用到这个函数。

resize()

改变实际元素的个数。

capacity()

返回当前容量。

reserve()

增加容器的容量。

shrink _to_fit()

将内存减少到等于当前元素实际所使用的大小。

operator[ ]

重载了 [ ] 运算符,可以向访问数组中元素那样,通过下标即可访问甚至修改 vector 容器中的元素。

at()

使用经过边界检查的索引访问元素。

front()

返回第一个元素的引用。

back()

返回最后一个元素的引用。

data()

返回指向容器中第一个元素的指针。

assign()

用新元素替换原有内容。

pop_back()

移出序列尾部的元素。

clear()

移出所有的元素,容器大小变为 0。

swap()

交换两个容器的所有元素。

三、参考资料

1. http://c.biancheng.net/view/6749.html