目录
一、vector简介
二、vector的构造
三、vector的大小和容量
四、vector的访问
五、vector的插入
六、vector的删除
简单模拟实现
一、vector简介
vector容器,直译为向量,实践中我们可以称呼它为变长数组。
使用时需添加头文件#include<vector>。
vector使用时需添加数据类型进行模板实例化,如vector<int>。
与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起list和forward_list统一的迭代器和引用更好。
二、vector的构造
- vector():生成空数组;
- vector(size_type n, const value_type& val = value_type()):生成有n个value元素的一个数组;
- template <class InputIterator> string (InputIterator first, InputIterator last):利用迭代器生成数组;
- vector (const vector& x):利用数组生成数组;
三、vector的大小和容量
- size():返回vector存储的元素个数;
- capacity():重新分配内存之前,vector能存储的最大元素数;
- reserve(size_t n = 0):修改vector的容量为n,若n大于现有容量,则不进行改变;
- resize(size_t n, value_type val = value_type()):修改vector的元素个数,若n小于现有字符个数,对其进行截断,若n大于现有字符串个数,使用val进行填充;
- empty():确认容器是否为空,为空则返回true,否则返回false;
四、vector的访问
- 使用[ ]:vector支持使用[ ]进行类似于数组的随机访问;
- 使用at(size_t pos):类似与[ ],区别为at函数会进行越界检查;
- 迭代器与反向迭代器
五、vector的插入
- push_back(value_type val):尾插;
- insert(iterator pos, value_type val):在pos位置前插入val;
void test()
{
vector<int> v;
// 尾插
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout<< "v:";
for(auto e : v)
cout << e << ' ';
cout << endl;// v:1 2 3
// 在pos前插入
s1.insert(s1.begin(),4);
cout<< "v:";
for(auto e : v)
cout << e << ' ';
cout << endl;// v:4 1 2 3
}
六、vector的删除
- iterator erase(iterator p):删除vector中p所指的字符
- iterator erase(iterator first, iterator last):删除迭代器区间[first,last)上所有元素
- string& erase(size_t pos = 0, size_t len = npos):删除从索引位置pos开始的len个元素
- void clear():清空容器;
简单模拟实现
参考下面的链接
my_vector · 梁羽赫/cpp_basic - 码云 - 开源中国 (gitee.com)https://gitee.com/yuhe-liang/cpp_basic/tree/master/my_vector