List


STL - 图1

  1. assign() list赋值
  2. back() 返回最后一个元素
  3. begin() 返回指向第一个元素的迭代器
  4. clear() 删除所有元素
  5. empty() 如果list是空的则返回true
  6. end() 返回末尾的迭代器
  7. erase() 删除一个元素
  8. front() 返回第一个元素
  9. get_allocator() 返回list的配置器
  10. insert() 插入一个元素到list
  11. max_size() 返回list能容纳的最大元素数量
  12. merge() 合并两个list
  13. pop_back() 删除最后一个元素
  14. pop_front() 删除第一个元素
  15. push_back() list的末尾添加一个元素
  16. push_front() list的头部添加一个元素
  17. rbegin() 返回指向第一个元素的逆向迭代器
  18. remove() list删除元素
  19. remove_if() 按指定条件删除元素
  20. rend() 指向list末尾的逆向迭代器
  21. resize() 改变list的大小
  22. reverse() list的元素倒转
  23. size() 返回list中的元素个数
  24. sort() list排序
  25. splice() 合并两个list
  26. swap() 交换两个list
  27. unique() 删除list中重复的元素

Vector

push_back() 在数组的最后添加一个数据
pop_back() 去掉数组的最后一个数据
at() 得到编号位置的数据
begin() 得到数组头的指针
end() 得到数组的最后一个单元+1的指针
front() 得到数组头的引用
back() 得到数组的最后一个单元的引用
max_size() 得到vector最大可以是多大
capacity() 当前vector分配的大小
size() 当前使用数据的大小
resize() 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
reserve() 改变当前vecotr所分配空间的大小
erase() 删除指针指向的数据项
clear() 清空当前的vector
rbegin() 将vector反转后的开始指针返回(其实就是原来的end-1)
rend() 将vector反转构的结束指针返回(其实就是原来的begin-1)
empty() 判断vector是否为空
swap() 与另一个vector交换数据

Stack

STL - 图2

empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素

Queue

STL - 图3

front() 返回 queue 中第一个元素的引用 
back()返回 queue 中最后一个元素的引用
push(const T& obj) 在 queue 的尾部添加一个元素的副本
push(T&& obj) 以移动的方式在 queue 的尾部添加元素 
pop() 删除 queue 中的第一个元素 
size() 返回 queue 中元素的个数 
empty() 如果 queue 中没有元素的话,返回 true 
emplace() 用传给 emplace() 的参数调用 T 的构造函数,在 queue 的尾部生成对象 
swap(queue<T> &other_q) 将当前 queue 中的元素和参数 queue 中的元素交换 它们需要包含相同类型的元素

String

begin() 得到指向字符串开头的Iterator
end() 得到指向字符串结尾的Iterator
rbegin() 得到指向反向字符串开头的Iterator
rend() 得到指向反向字符串结尾的Iterator
size() 得到字符串的大小
length() 和size函数功能相同
max_size() 字符串可能的最大大小
capacity() 在不重新分配内存的情况下,字符串可能的大小
empty() 判断是否为空
operator[] 取第几个元素,相当于数组
c_str() 取得C风格的const char* 字符串
data() 取得字符串内容地址
operator= 赋值操作符
reserve() 预留空间
swap() 交换函数
insert() 插入字符
append() 追加字符
push_back() 追加字符
operator+= += 操作符
erase() 删除字符串
clear() 清空字符容器中所有内容
resize() 重新分配空间
assign() 和赋值操作符一样
replace() 替代
copy() 字符串到空间
find() 查找
rfind() 反向查找
find_first_of() 查找包含子串中的任何字符,返回第一个位置
find_first_not_of() 查找不包含子串中的任何字符,返回第一个位置
find_last_of() 查找包含子串中的任何字符,返回最后一个位置
find_last_not_of() 查找不包含子串中的任何字符,返回最后一个位置
substr() 得到字串
compare() 比较字符串
stoi(num);      //int
stol(num);      //long
stoul(num);     //unsigned long
stoull(num);        //unsigned long long
stof(num);      //float
stod(num);      //double
operator+ 字符串链接
operator== 判断是否相等
operator!= 判断是否不等于
operator< 判断是否小于
operator>> 从输入流中读入字符串
operator<< 字符串写入输出流

Set

Set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据
在Set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序

 begin()      返回set容器的第一个元素
 end()      返回set容器的最后一个元素
 clear()       删除set容器中的所有的元素
 empty()     判断set容器是否为空
 insert()      插入一个元素
 erase()       删除一个元素
 size()     返回当前set容器中的元素个数

unordered_Set

unordered_Set与Set区别:

  1. set基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。
  2. unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。

Map

map是STL的一个关联容器,它提供一对一的hash。
第一个可以称为关键字(key),每个关键字只能在map中出现一次;
第二个可能称为该关键字的值(value);

begin()          返回指向map头部的迭代器
clear()         删除所有元素
count()          返回指定元素出现的次数
empty()          如果map为空则返回true
end()            返回指向map末尾的迭代器
equal_range()    返回特殊条目的迭代器对
erase()          删除一个元素
find()           查找一个元素
get_allocator()  返回map的配置器
insert()         插入元素
key_comp()       返回比较元素key的函数
lower_bound()    返回键值>=给定元素的第一个位置
max_size()       返回可以容纳的最大元素个数
rbegin()         返回一个指向map尾部的逆向迭代器
rend()           返回一个指向map头部的逆向迭代器
size()           返回map中元素的个数
swap()            交换两个map
upper_bound()     返回键值给定元素的第一个位置
value_comp()      返回比较元素value的函数

unordered_Map

unordered_Map与Map区别:

  1. map 内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的
  2. unordered_map 内部实现了一个哈希表(也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1)