1:STL容器

  C++标准程序库提供了如下容器:序列容器、关联容器、容器配接器和其它STL容器。序列容器包括vector、deque和list;关联容器包括map、multimap、set和multiset;容器配接器包括stack、queue和priority queue,其它容器包括string、array和hash table。本节主要介绍容器的共通能力和操作

1:容器的共通能力

  STL容器三个最核心的能力:
1. 容器提供“value”而非“reference”。容器内部对元素进行拷贝操作,如果多容器共享元素则需使用指针。
2. 容器内元素有序。可用迭代器进行遍历。
3. 操作非绝对安全。STL不检查和抛出错误,违反需求导致未定义。

2:容器的共通操作

2.1 初始化

  每个容器提供默认构造函数、copy构造函数和析构函数。

Container c; //默认构造函数初始化
Container c(c1); //用另一个容器进行拷贝初始化
Container c(c1.begin(),c1.end()); //用另一个容器的部分元素拷贝初始化
Container c=c1; //赋值,尽量少用,下面介绍
Container c={1,2,3,4}; //列表初始化
Container c=((istream_iterator<type>cin),
          (istream_iterator<type>cin()));//用标准输入进行初始化

2.2 大小有关

size(); //返回容器大小
empty();//返回容器是否为空
max_size(); //容器所能容纳的最大元素数量,因版本而异

2.3 比较

  包含常见的比较操作符:==、!=、<、<=、>、>=。定义依据以下规则:
1. 两端属于同一类别。
2. 字典式比较

2.4 赋值和交换

  对容器赋值时,将源容器所有元素拷贝到目标容器中,目标容器所有元素被移除,复杂度为线性。swap()函数只交换容器内部数据(只是替换内部指针),复杂度为常数。拷贝后源容器不再使用时,采用swap()函数效率更高。swap()函数有两种操作:c1.swap(c2),swap(c1,c2);

你可能感兴趣的:(STL)