容器库概览

新标准库容器的性能几乎肯定与最精心优化过的同类数据结构一样好(通常会更好)。
确定使用哪种顺序容器

  • 除非有很好的理由选择其他容器,否则应使用 vector
  • 如果程序有很多小的元素,且空间的额外开销很重要,则不要使用 list 或 forward_list
  • 如果程序要求随机访问元素,应使用 vector 或 deque
  • 如果程序要求在容器的中间插入或删除元素,应使用 list 或 forward_list
  • 如果程序需要在头尾位置插入或删除元素,但不会在中间位置进行插入或删除,则使用 deq

我们可以为不支持特定操作需求的类型定义容器,但只能使用那些没有特殊要求的容器操作

  1. // 假定 noDefault 是一个没有默认构造函数的类型
  2. vector<noDefault> v1(10, init); // 正确,提供了元素初始化器
  3. vector<noDefault> v2(10); // 错误,必须提供一个元素初始化器