C++提高-STL-vector

动态扩展:不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间

vector构造函数
vector<T> v;
vector(v.begin(), v.end());
vector(n, elem); // 将n个elem拷贝给本身
vector(const vector &vec);  // 拷贝构造函数


vector赋值操作
vector& operator=(const vector &vec);
assign(beg, end);
assign(n, elem)l;


vector 容量和大小
empty()0;  // 是否为空
capacity();  // 容器的容量
size(); // 元素个数
resize(int num);  // 重新指定容器长度
resize(int num, elem);  // 重新指定容器长度,若容器变长,则用elem填充


vector插入与删除
push_back(ele);
pop_back();
insert(const_iterator pos, ele);
insert(const_iterator pos, int count, ele);  // 插入count个
erase(const_iterator pos);  // 删除迭代器指向的元素
erase(const_iterator start, const_iterator end);
clear();  //删除所有的元素


vector数据存取
at(int idx);
operator[];
front();  // 返回第一个元素
back();  // 返回最后一个元素


vector元素互换
swap(vec);

巧用swap可以收缩内存(vector元素删除后,空间不会释放)

// vector<int>(v)调用拷贝构造函数生产匿名对象,这行代码执行完系统自动回收匿名对象
vector<int>(v).swap(v);


vector预留空间

为了减少vector在动态扩展容量时的扩展次数

resver(int len);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容