容器是什么

定义:在C++ 中容器被定义为:一些特定类型对象的集合。解释一下:容器是C++官方针对一些典型数据结构制定的一种类模板。(在数据存储上,这种对象类型,包含有其它对象或指向其它对像的指针,这种对象类型就叫做容器。存疑)。一般来讲,容器都定义在一个.h中,文件名与类型名相同。

作用:容器封装了一些对数据操作上的细节,可以提高代码泛化能力和编程便捷度。可看作是实现特定泛型编程问题的一种方案。

在C++ 中,standard template library(STL)主要有两部分构成:容器和操作这些容器的泛型算法。容器和标准模板库(STL )的关系,为下图:

nsobject c 容器 c++容器是什么意思_c++


容器,算法和泛型指针的关系,如下图:

nsobject c 容器 c++容器是什么意思_c++_02

容器的分类

STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。

nsobject c 容器 c++容器是什么意思_c++_03


具体特性,如下表:

STL容器类

内部结构

随机/顺序存取

搜索速度

插入/移除

顺序式容器

vector

动态数组

随机存取


队尾

list

双向链表

双向顺序存取

很慢

任意位置

deque

双端队列

随机存取


头/尾

forword_list

单向链表

单向顺序存取

很慢

任意位置

array

数组

随机存取


固定大小

无法插入/删除

string

(可看作字符容器)

类似vector

随机存取


关联式容器

set

二叉树

multiset

二叉树

map

二叉树

multimap

二叉树

容器适配器

stack

queue

priority_queue

数据存储结构如下:

nsobject c 容器 c++容器是什么意思_数据结构_04

顺序容器

  • 选择哪种顺序容器?
    除非有很好的选择别的顺序容器的理由,否则使用vector;
    如果程序有很多小的元素,且空间的额外开销很重要,则不要使用list和forward_list(含过多指针);
    根据插入或删除元素的位置选择;
    如果不确定使用哪种容器,则只是用vector和list。
  • vector
  • list
  • deque

关联容器

容器适配器