1. resize()
void resize (size_type n, value_type val = value_type());
调整数组的容量,接受两个参数。
1. 如果 n < v.size(),则将其元素个数减少到n个,销毁后面那些超出的元素。
2. 如果 v.size() < n < v.capacity(),扩大size(),新增的元素值为val。
3. 如果 n > v.capacity(),对数组进行扩容,新增的元素值为val。
2. reserve()
void reserve (size_type n);
扩大数组容量,如果n > v.capacity(),给数组新开辟一块容量为n的空间,把原数据拷贝至新空间;如果n<=v.capacity(),则不进行任何操作。
3. operator[]
reference operator[] (size_type n); const_reference operator[] (size_type n) const;
返回数组中下标为n的元素的引用。该函数有两种形式,普通的可以通过返回值修改v[n]的值,加const不能通过返回值修改。如果n超出数组范围,直接断言报错。与它类似的还有at()函数,该函数出现越界情况是抛出异常。
4. assign()
(1) void assign(const_iterator first,const_iterator last); (2) void assign(size_type n,const T& x = T()); (1) 将区间[first,last)的元素赋值到当前的vector容器中
(2) 赋n个值为x的元素到vector容器中,这个容器会清除掉vector容器中以前的内容。
vector<int> first; vector<int> second; vector<int> third; first.assign(7, 100); // 7 ints with a value of 100 vector<int>::iterator it; it = first.begin() + 1; second.assign(it, first.end() - 1); // the 5 central values of first int myints[] = { 1776, 7, 4 }; third.assign(myints, myints + 3); // assigning from array. 
5. insert()
(1) iterator insert (iterator position, const value_type& val); (2) void insert (iterator position, size_type n, const value_type& val); (3) template <class InputIterator> void insert (iterator position, InputIterator first, InputIterator last); (1) 在指定位置position前插入值为val的元素,返回指向这个元素的迭代器
(2) 在指定位置position前插入n个值为val的元素
(3)在指定位置position前插入区间[first, last)的所有元素
int main() { vector<int> v1(3, 100); vector<int>::iterator it; //(1) it = v1.begin(); it = v1.insert(it, 200); //(2) v1.insert(it, 2, 300); // "it" no longer valid, get a new one: it = v1.begin(); //(3) vector<int> v2(2, 400); v1.insert(it + 2, v2.begin(), v2.end()); int myarray[] = { 501, 502, 503 }; v1.insert(v1.begin(), myarray, myarray + 3); cout << "v1 contains:"; for (it = v1.begin(); it<v1.end(); it++) cout << ' ' << *it; cout << endl; return 0; } 
6. erase()
(1) iterator erase (iterator position); (2) iterator erase (iterator first, iterator last); (1) 删除position处的元素。迭代器position指向不变,仍然指向被删除元素的位置,而被删除元素之后的所有元素都向前移动一位,也就是该迭代器实际上是指向了原来被删除元素的下一个元素。
(2) 删除区间[first, last)内的所有元素。删除一段段元素之后,后面的元素(从last开始到vector.end())会被复制到被删除元素段开始的地方(first开始),而vector.end()也根据删除的元素个数往前移动。
注意:即使容器内容是指针对象,erase()也会清空指针对象指向的内容。
7. clear()
清空容器中的内容,但如果是指针对象的话,并不能清空其内容,必须要像以下方法一样才能达到清空指针对象的内容:
vector<int*> v; for (int it = 0; it != v.size(); ++it) { delete v[it]; } v.clear(); 但也可以使用swap函数巧妙的完成清理内存:
v.clear(); v.swap(vector<int>());