c++中vector的用法详解.doc.pdf
C++中vector的用法详解 Vector是C++中的一种数据结构,确切地说是一个类,它相当于一个动态的数组。当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。 文件包含 在使用vector前,需要在程序开头处加上`#include <vector>`以包含所需要的类文件,并加上`using namespace std;`。 变量声明 可以声明一个int向量以替代一维的数组,例如:`vector<int> a;`。也可以用vector代替二维数组,例如:`vector<vector<int>> a;`。同理,可以用vector代替三维数组,例如:`vector<vector<vector<int>>> a;`。 具体的用法以及函数调用 1. 如何得到向量中的元素?可以使用`at()`函数,例如:`vector<int> a; int b = 5; a.push_back(b);`。 2. `push_back()`函数可以在数组的最后添加一个数据。 3. `pop_back()`函数可以去掉数组的最后一个数据。 4. `at()`函数可以得到编号位置的数据。 5. `begin()`函数可以得到数组头的指针。 6. `end()`函数可以得到数组的最后一个单元+1的指针。 7. `front()`函数可以得到数组头的引用。 8. `back()`函数可以得到数组的最后一个单元的引用。 9. `max_size()`函数可以得到vector最大可以是多大。 10. `capacity()`函数可以得到当前vector分配的大小。 11. `size()`函数可以得到当前使用数据的大小。 12. `resize()`函数可以改变当前使用数据的大小,如果它比当前使用的大,者填充默认值。 13. `reserve()`函数可以改变当前vector所分配空间的大小。 14. `erase()`函数可以删除指针指向的数据项。 15. `clear()`函数可以清空当前的vector。 16. `rbegin()`函数可以将vector反转后的开始指针返回。 17. `rend()`函数可以将vector反转构的结束指针返回。 18. `empty()`函数可以判断vector是否为空。 函数实现功能 1. `clear()`函数可以移除容器中所有数据。 2. `empty()`函数可以判断容器是否为空。 3. `erase(pos)`函数可以删除pos位置的数据。 4. `erase(beg, end)`函数可以删除[beg, end)区间的数据。 5. `front()`函数可以传回第一个数据。 6. `insert(pos, elem)`函数可以在pos位置插入一个elem拷贝。 7. `pop_back()`函数可以删除最后一个数据。 8. `push_back(elem)`函数可以在尾部加入一个数据。 9. `resize(num)`函数可以重新设置该容器的大小。 10. `size()`函数可以回容器中实际数据的个数。 11. `begin()`函数可以返回指向容器第一个元素的迭代器。 12. `end()`函数可以返回指向容器最后一个元素的迭代器。 内存管理与效率 1. 使用`reserve()`函数可以提前设定容量大小,避免多次容量扩充操作导致效率低下。 2. 在进行insert或push_back等增加元素的操作时,如果此时动态数组的内存不够用,就要动态的重新分配当前大小的1.5~2倍的新内存区,再把原数组的内容复制过去。 3. 在进行pop_back操作时,capacity并不会因为vector容器里的元素减少而有所下降,还会维持操作之前的大小。 因此,在使用vector时,应当使用`reserve()`函数提前设定其容量大小,以避免多次容量扩充操作导致效率低下。