zoukankan      html  css  js  c++  java
  • C++ 顺序容器

      类型

      vector:可变大小数组。支持快速随机访问。在尾部之外插入或删除较慢

      deque:双端队列。支持快速随机访问,在头尾插入和删除快

      list:双向链表。只支持双向顺序访问。插入删除快

      forward_list:单向链表,仅能单向顺序访问

      array:固定大小数组。支持快速访问。不能添加或删除。定义时应指定容器大小,如:array<int , 10>

      string:与vector类似,保存字符。

      assign赋值

      seq.assign(b,e);  //b和e为迭代器,将seq替换为b和e所表示范围中的元素,不能指向seq中元素

      seq.assign(il);  //将seq中元素替换为il中元素

      seq.assign(n,t); //将seq中元素替换为n个值为t的元素

      添加元素

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

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

      push_front(t)  //在头部创建,vector和string不支持

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

      emplace(p,args)  //同上

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

      insert(p,b,e)  //将b和e指定范围内元素插入到迭代器p指向的元素之前,b和e不能指向自己的元素。

              返回指向新添加的第一个元素的迭代器

      insert(p,il)  //il为花括号包围的元素值列表,将这些给定值插入到p之前,返回新添加的第一个迭代器。

      删除元素

      pop_back()   //删除尾元素,若列表为空则函数行为未定义,返回void

      pop_front()  //删除首元素,vector和string不支持

      erase(p)  //删除迭代器p所指定的元素,返回一个纸箱被删元素之后元素的迭代器,

            //若p指向尾元素,则返回尾后迭代器。若p为尾后迭代器,则函数行为未定义

      erase(b,e)  //删除迭代器b和e所指定范围内的元素,返回一个指向最后一个被删元素的迭代器。

            //若e为尾后迭代器,则返回尾后迭代器

      clear()  //清空容器,返回void

      单向链表操作

      before_begin()  //返回首前迭代器,即链表头指针

      cbefore_begin()  //返回const类型首前迭代器

      insert_after(p,n,t)  //在迭代器p后插入n个元素t,n可以不用,返回一个指向最后一个插入元素的迭代器

      insert_after(p,b,e)  //在p之后插入b到e的元素

      insert_after(p,il)  //在p后插入il,il为花括号列表

      emplace_after(p,args)  //使用args在p指定的位置之后创建一个元素,返回指向这个新元素的迭代器

      erase_after(p)  //删除p指向的位置之后的元素,返回指向被删元素之后元素的迭代器

      erase_after(b,e)  //删除b之后(不含b)到e之间的元素

      其他操作

      resize(n)  //调整容器大小为n,新添加的初始化为0,多的丢弃,不适用于array

      resize(n,t)  //调整容器大小为n,新添加的元素初始化为t

      容器大小管理

      capacity()  // 不重新分配内存空间,c可以保存的元素数量  只适用于vector和string

      reserve(n)  //分配至少容纳n个元素的空间  只适用于vector和string

      list和forward_list成员函数算法

      lst.merge(lst2, comp)  将来自lst2的元素合并入lst,lst和lst2必须是有序的。

                 元素将从lst2中删除,comp默认为<。

      lst.remove(val)    调用erase删除掉与给定值相等的元素

      lst.remove_if(pred)  删除谓词为真时的元素

      lst.reverse()     反转元素的顺序

      lst.sort(comp)    排序,默认为<

      lst.unique()     删除同一值的连续拷贝,默认为 == ,或者使用给定的二元谓词。

      splice成员

      lst.splice(args)或flst.splice_after(args)

      ( p ,l st2 )     p是lst的迭代器或flst的首前迭代器,将lst2所有元素移动到lst的p之前或flst的p之后。

               并将lst2中元素删除,lst和lst2不能是同一链表

      ( p , lst2 , p2)    p2是lst2的有效迭代器,将p2所指元素移动到lst,或将p2之后元素移动到flst。lst可以相同

      ( p , lst2 , b , e )  b和e是p2的合法范围,将给定范围元素移动,lst2可以相同,但是p不能在相同范围。

      

  • 相关阅读:
    策略梯度训练cartpole小游戏
    关于不执行整个大项目而是执行其中一部分独立文件夹的时候的python运行方法
    和textrank4ZH代码一模一样的算法详细解读
    K8s常用命令
    python标准库
    chrome通过devtools来查看Devtools Extension与浏览器内核实际通信的数据情况
    修改文件MD5值
    使用charles过滤网络请求
    git中working tree, index, commit
    Maven中settings.xml的配置项说明
  • 原文地址:https://www.cnblogs.com/wshr007/p/10444374.html
Copyright © 2011-2022 走看看