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);
posted @ 2021-08-01 17:13  suntus  阅读(40)  评论(0编辑  收藏  举报