动态扩展:不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
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);