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不能在相同范围。

      

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/wshr007/p/10444374.html
Copyright © 2011-2022 走看看