C++顺序容器总结

顺序容器介绍

  • vector    可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素可能很慢。
  • deque    双端队列。支持快速随机访问。在头尾位置插入或者删除速度很快。
  • list          双向链表。只支持双向顺序访问。在list中任何位置进行插入或者删除速度都很快。
  • forward_list   单向链表。只能支持单向顺序访问。在链表任何位置进行插入或者删除操作都很快。
  • array      固定大小数组。支持快速随机访问。不能添加或者删除元素。
  • string     与vector相似的容器,但是专门用于保存字符,随机访问速度很快,在尾部插入或者删除速度很快。

容器库

迭代器

  • 标准容器类型上的所有迭代器都允许我们访问容器中的元素,而迭代器都是通过解引用运算符来实现这个操作的,所以标准库容器中的所有迭代器都定义了递增运算符,从当前元素移动到下一个元素,而对于递减运算符除了forwaard_list之外其他容器都支持递减操作。
  • 迭代器范围,一个迭代器范围由一对迭代器表示,两个迭代器分别指向同一个容器中的元素,通常称为begin、end,此时容器中的元素范围用区间表示为[begin,end),表示区间从begin元素开始,与end(end前一个元素为最后一个元素)之前结束。 
  1.  如果begin!=end,那么容器中至少包括一个元素。
  2. 如果begin==end,则范围为空。
  • 除了begin、end迭代器,还有cbegin、cend、rbegin、rend、crbegin、crend,带c开头的表示返回const迭代器,以r开头的表示返回反向迭代器,反向迭代器+const表示返回反向常量迭代器。

容器定义和初始化

每个容器都定义了默认构造函数,除了array之外,其他容器在定义的时候都会创建一个空容器。

C c;            // 默认构造函数.若是一个array,则c中元素按默认方式初始化.否则为空.
C c1(c2);    // c1初始为为c2的拷贝.注意! 类型相同(容器类型,元素类型).对于array,大小还必须相同.
C c1=c2; 
C c{a,b,c};  // 初始化为初始化列表中元素的拷贝.
C c={a,b,c};
C c(b,e);    // 迭代器初始化.c初始化为b和e指定范围中的元素的拷贝.
C seq(n);   // seq包含n个元素.这些元素进行了初始化.
C seq(n,t); // 初始化了n个元素.值都为t.

猜你喜欢

转载自blog.csdn.net/weixin_39485901/article/details/89230236
今日推荐