vector实际就是动态数组,头文件<vector>,并且必须要有"
using namespace std;"这行代码。随机存取任何元素都能在常数时间完成。在尾部增删元素具有较好的性能。
尾端插入和删除元素,算法时间复杂度都为O(1);其他元素插入和删除为O(n)
作用 | vector<int> v; | 常用函数功能 | 备注 |
内存分配 | v.capacity() | 当前可容纳的vector元素个数 | 使用之前应该分配好使用空间和内存 |
v.reserve(n) | 扩大容量为n | ||
v.at(i) | 返回索引所标识的元素。对i进行越界检查 | ||
v[i] | 返回索引所标识的元素。和数组用法几乎完全相同,不检查 | ||
元素存取 | v.front() | 返回第一个元素,不检查第一个元素是否存在 | |
v.back() | 返回最后一个元素,不检查最后一个元素是否存在 |
作用 | vector<int> v; | 常用函数功能 | 备注 |
插入元素 | v.insert(pos,e) | 在pos位置插入元素e的副本,并返回新元素位置 | 这三种操作涉及大量元素的移动,可能会产生严重影响效果 |
v.insert(pos,n,e) | 在pos位置插入n个元素e的副本 | ||
v.insert(pos,begin,end) | 在pos位置插入区间(begin,end)内所有元素的副本 | ||
v.push_back(20) | 尾端插入新元素的副本 |
作用 | vector<int> v; | 常用函数功能 | 备注 |
移除元素 | v.erase(pos) | 删除pos位置的元素,返回下一个元素的位置 | 由vector产生的迭代器持续有效,除非产生(1)插入元素;(2)容器变化引起内存重新分配 |
v.erase(begin,end) | 删除区间(begin,end)内所有元素,返回下一个元素的位置 | ||
v.pop_back() | 移除最后一个元素但不返回最后一个元素 | ||
v.clear() | 移除所有元素,清空容器 | ||
v.resize(num) | 将元素数量改为num(增加的元素用默认构造函数产生,多余的元素被删除) | ||
v.resize(num,e) | 将元素数量改为num(增加的元素是e的副本) | ||
v.empty() | 判断是否为空,空为true,否则为false | ||
v.size() | 返回元素个数 | ||
#转载请注明出处!