JohnGu

导航

STL容器

顺序容器:

  vector:      可变大小数组。支持快速随机访问。在尾部的位置插入/删除速度快。

  deque:      双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。

  list:         双向列表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。

  forward_list:   单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作都很快。

  array:        固定数组大小。支持快速随机访问。不能添加/删除元素。

  string:        与vector相似的容器,但专门用于保存字符。随机访问块。在尾部插入/删除速度快。

 

  
  //emplace_back,emplace,emplace_back对应的是push_front,insert,push_back,emplace版本在容器中直接构造元素,传递给emplace函数的参数必须与元素类型的构造函数相匹配

 

vector:

  类型别名

    iterator            此容器类型的迭代器类型。

    const_iterator          此容器类型的const迭代器类型,可以读取元素,不可以修改元素。

    receive_iterator

    const_receive_iterator

    sizt_type            无符号整数类型,足够保存此种容器类型最大可能容器的大小

    difference_type          带符号的整数类型,足够保存两个迭代器之间的距离。

    value_type           元素类型

    reference            元素的左值类型:与value_type&含义相同

    const_reference       元素的const左值类型:与const value_type&含义相同

  成员函数  

   构造: 

      C c;            默认构造函数,构造一个空容器

      C c1(c2);          构造c1,是c2的拷贝

      C c(b, e);          构造c,将迭代器b和e指定的范围内的元素拷贝到c

      C c{a, b, c, d...};      列表初始化c

   添加:

 

      c.push_back(t)       在c的尾部创建一个值为t的元素,返回void

      c.emplace_back(args)    c的尾部创建一个由args创建的元素,返回void

      c.insert(p, t)        在迭代器p指向的元素之前创建一个值为t的元素。返回指向新添加的元素的迭代器

      c.insert(p, n, t)        在迭代器p指向的元素之前插入n个值为t的元素。返回指向新添加的第一个元素的迭代器,若n为0,则返回p

      c.insert(p, b, e)       将迭代器b和e指定的范围内的元素插入迭代器p指向的元素之前。b和e不能指向c中的元素,返回指向新添加的第一个元素的迭代器;若范围为空,则返回p

      c.insert(p, il)         il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p所指向的元素之前,返回指向新添加的第一个元素的迭代器;若列表为空,则返回p

 

   访问:

      c.front()          返回c中尾元素的引用。若容器为空,函数行为未定义

      c.back()          返回c中首元素的引用。若容器为空,函数行为未定义

      c.begin()           返回指向c中首元素的迭代器

      c.end()            返回指向c中尾元素之后位置的迭代器

      c.at(n)           返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则抛出一out_of_range异常

      c[n]            返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则函数行为 未定义

 

   删除:

      c.pop_back()       删除c中尾元素。若c为空,则函数未定义。函数返回void

      c.erase(p)         删除迭代器p所指定的元素,返回一个指向被删元素之后的元素迭代器,若c指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则函数行为未定义

      c.erase(b, e)       删除迭代器b和e所指定范围内的元素,返回一个指向最后一个元素之后元素迭代器,若e本身就是尾后迭代器,则函数返回尾后迭代器

      c.clear()          删除c中所有的元素。返回void

 

   大小:

      c.size()          返回容器元素的数目

      c.empty()         如果容器中储存了元素,返回false,否则返回true

      c.max_size()           返回容器中课保存最大元素的数目

      c.resize(n)         调整c的大小为n个元素。若n<c.size(),则多出的元素被丢弃。若必须添加新元素,对新元素进行值初始化(0)

      c.resize(n, t)        调整c的大小为n个元素。任何新添加的元素都初始化为值t

      c.shrink_to_fit()       请将capacity()减少为size()相同大小

      c.capacity()        不重新分配内存空间的话,c可以保存多少元素

      c.reserve(n)        分配至少能容纳n个元素的内存空间

      

 

deque:

list:

forward_list:

   添加:

      c.push_front(t)       在c的头部创建一个值为t的元素,返回void

      c.emplace_front(args)    c的头部创建一个由args创建的元素,返回void

      c.emplace_after(p, args)   使用args在p指定的位置之后创建一个元素。返回一个指向这个新元素的迭代器,若p为尾后迭代器,则函数行为未定义

      c.insert_after(p, t)      在迭代器p指向的元素之后创建一个值为t的元素。返回指向新添加的元素的迭代器

      c.insert_after(p, n, t)    在迭代器p指向的元素之插入n个值为t的元素。返回指向新添加的第一个元素的迭代器,若n为0,则返回p

      c.insert_after(p, b, e)     将迭代器b和e指定的范围内的元素插入迭代器p指向的元素之。b和e不能指向c中的元素,返回指向新添加的第一个元素的迭代器;若范围为空,则返回p

      c.insert_after(p, il)     il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p所指向的元素之,返回指向新添加的第一个元素的迭代器;若列表为空,则返回p

 

   删除:

      c.pop_back()       删除c中尾元素。若c为空,则函数未定义。函数返回void

      c.erase_after(p)      删除迭代器p所指定的元素,返回一个指向被删元素之后的元素迭代器,若c指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则函数行为未定义

      c.erase_after(b, e)    删除迭代器b和e所指定范围内的元素,返回一个指向最后一个元素之后元素迭代器,若e本身就是尾后迭代器,则函数返回尾后迭代器

      c.clear()          删除c中所有的元素。返回void

 

array:

string:

 

posted on 2017-12-01 15:07  JohnGu  阅读(251)  评论(0编辑  收藏  举报