vector相关
1. 构造
空vector:
- vector(): 空vector
n个元素:
- vector(int size): n个元素位置
- vector(int size, const T &t): n个元素,均初始化为t
复制构造:
- vector(const vector &): 复制构造
- vector(begin, end): 复制区间构造
移动构造
- vector(vector &&);
2. 访问元素
带边界检查:
- reference at(size_type pos): 返回元素引用
- const_reference at(size_type pos) const: 返回元素的常引用
不带边界检查:
- reference operator[](size_type pos)
- const_reference operator[](size_type pos) const
front:
- reference front(): c.front() 跟 *c.begin() 一样
- const_reference front() const
back:
- reference back(): c.back() 跟 *std::prev(c.end()) 一样
- const_reference back() const
data:
- T *data(): 返回底层存储数据的内存的开始地址,有效地址为 [data(), data() + size())
- constexpr const T *data();
3. 容量
- bool empty() const: begin() == end()
- size_type size() const: 元素个数
- max_size(): 可支持的最大元素个数,受限于系统和库的实现。
- void reserve(size_type new_cap): 增加可存放元素的数量
- size_type capacity() const: 当前已申请的空间可支持的元素数量
- void shrink_to_fit(): 请求移除未使用的空间
4. 操作容器
- void clear(): 删除所有元素,size()返回0
插入:
- iterator insert(iterator pos, const T &value): 在pos位置插入 value
- iterator insert(const_iterator pos, const T &value)
- iterator insert(const_iterator pos, T &&value);
- iterator insert(iterator pos, first, end): 在pos之前插入[first, end)
- iterator insert(iterator pos, std::initializer_list<T> ilist): 使用初始化列表插入
原地新建:
- iterator emplace(const_iterator pos, Args &&... args);
删除元素:
- iterator earse(iterator pos): 删除pos位置的元素
- iterator earse(iterator first, iterator last): 删除 [first, last)之间的元素
尾部插入:
- void push_back(const T &value);
- void push_back(T &&value);
- void emplace_back(Args &&... args);
- reference emplace_back(Args &&... args);
删除最后的元素:
- void pop_back();
调整元素个数:
小于当前个数的话,调整到目标个数;
大于当前个数的话,默认构造或者拷贝构造
- void resize(size_type count);
- void resize(size_type count, T value = T());
- void resize(size_type count, const value_type &value);
交换两个容器的内容:
- void swap(vector &other);