C++之vector小结

来源:互联网 发布:linux创建目录 ls 编辑:程序博客网 时间:2024/05/01 07:30
  1. 概念
vector与数组类似,保存的元素是在连续的存储空间,所不同的是vector可以动态改变大小,所以有动态数组之称。
2. 优缺点
可以动态改变大小,支持直接访问(通过下标),在尾部添加和删除操作较简单,但是在其他位置删除和插入代价较高,性能比不上list等。
3. 5种构造函数
//empty vector
vector<int> vec;
//8 items with the value 100
vector<int> vec1(8, 100);
//using the iterator
vector<int> vec2(vec1.begin(),vec1.end());
//a copy of another vector
vector<int> vec3(vec2);
//3 items with defalult value 0
vector<int> vec4(3);
4. 常用函数

Vec.push_back()

尾部添加一个元素

Vec.pop_back()

         尾部删除一个元素

Vec.size()

         存储实际大小

Vec.capacity()

         分配内存大小(一般指数级增长)

Vec.max_size()

         可以存储的最大空间

Vec.insert()

         插入元素(运用iterator)

Vec.erase()

         删除元素(运用iterator)

Vec.front()

         返回首元素的引用

Vec.back()

         返回尾部元素的引用

Vec.empty()

         判断是否为空

Vec.begin()

         首位的指针

Vec.end()

         尾部下一位的指针

Vec.resize()

         重新分配实际存储大小(实际改变)

Vec.reserve()

         重新分配存储空间大小(若大小小于实际存储空间,则拒绝,即不会改变实际存储位置)

Vec.swap()

         交换两个vector

Vec.clear()

         Size变为0,但capacity不变,若要清空capacity则用(vector<int>().swap(vec))

5. 小技巧

1)使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下;

2)使用交换技巧修正多余空间

vector<int>(vec).swap(vec);

3)用swap方法强行释放所占内存

vector<int>().swap(vec).

0 0
原创粉丝点击