zoukankan      html  css  js  c++  java
  • 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:

     

  • 相关阅读:
    windows“画图”工具用法
    数字信号处理的流程
    怎样去掉桌面图标蓝色阴影
    Linux下Wi-Fi配置工具2
    vs2005下面编译自己的luars232.dll
    [spring]03_装配Bean
    [Java IO]02_字节流
    [Java IO]01_File类和RandomAccessFile类
    [Spring]01_环境配置
    Notepad++ 实用技巧
  • 原文地址:https://www.cnblogs.com/johngu/p/7942435.html
Copyright © 2011-2022 走看看