顺序容器

顺序容器类型

    vector     可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素可能很慢
    deque       双端队列。支持快速随机访问,在头尾插入/删除速度很快
    list 双向链表,只支持双向顺序访问,在list中任何位置进行插入/删除操作都很快
    forward_list 单项链表,只支持单项顺序访问,在链表任何位置进行插入/删除造作都很快
    array 固定大小数组,支持快速随机访问,不能添加和删除元素
    string 与vector相似的容器,但专门用于保存字符。随机访问很快,在尾部插入/删除很快

容器操作

类型别名  
  iterator   容器类型的迭代器类型
  const_iterator   可以读取元素,但不能修改元素的迭代器类型  
  size_type 无符号整数,足够保存此容器类型最大可能容器的大小  
  differenct_type   带符号整数类型,足够保存两个迭代器之间的距离
  value_type 元素类型
构造函数  
  C c 默认构造函数
  C c1(c2) 

构造c2的拷贝c1

  C c(b,e) 构造c,将迭代器b和e指定范围能的元素到c(array)不支持
  C c{a,b,c,d,e,f} 列表初始化c
赋值与swap  
  c1=c2 将c1中的元素替换为c2中的元素
  c1={a,b,c} 将c1中的元素替换为列表中的元素(不适用于array)
  a.swap(b) 交换a和b的元素
  swap(a,b) 与a.swap(b)等价
大小  
  c.size() c中元素的数目(不支持forward_list)
  c.maxsize() c可保存的最大元素数目
  c.empty() 若c中存储了元素,返回false,否则返回true
添加/删除元素  
  注:在不同的容器中,这些操作的结构都不同
  c.insert(args) 将args中的元素拷贝进c
  c.emplace(inits) 使用inits构造c中的一个元素
  c.erase(args) 删除args指定的元素
  c.clear() 删除c中的所有元素,返回void
关系运算符  
  == , != 所有容器都支持相等(不等)运算符
  < , <= ,> ,>= 关系运算符(无序关联容器不支持)
获取迭代器  
  c.begin(),c.end() 返回指向c的首元素和微元素之后位置的迭代器
  c.cbegin(),c,cend() 返回const_iterator

注意:赋值相关运算会导致指向坐标容器内部的迭代器、引用和指针失效。而swap操作将容器内容交换不会导致指向容器的迭代器、引用和指针失效

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

seq.assign(il)   将迭代器中的元素替换为初始化列表i1中的元素

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

向顺序容器添加元素

  除array外,所有标准库容器都提供灵活的内存管理。在运行时可以动态添加或删除元素来改变容器大小。

这些操作都会改变容器大小,array不支持这些操作

forward_list 有自己转悠版本的insert和emplace

forward_list不支push_back和emplace_back

vector和string不支持push_front和emplace_front

c.pushback(t)   在c尾部创建一个值为t或由args创建的元素。返回void
c.emplace_back(args)    
c.push_front(t) 在c头部创建一个值为t或由args创建的元素。返回void
c.emplace_front(args)  
c.insert(p,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

String的额外操作

标准库string类型还提供了接受C风格字符数组的insert和assign版本。

s.substr(pos,n)   返回一个string,包含s中从pos开始的第n个字符的拷贝。pos的默认值为0。
s.insert(pos,args) 在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器
s.erase(pos,len)  删除从位置pos开始的len个字符。如果len被删除,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
s.assign(args) 将s中的字符替换为args指定的字符。返回一个指向s的引用
a.sppend(args) 将args追加到s。返回一个指向s的引用
s.replace(rang,args)   删除s中范围range内的字符,替换为args指定的字符。range或者是一个下表和一个长度,或者是一对指向s的迭代器,返回一个指向s的引用
s.find(args) 查找s中args第一次出现的位置
s.rdinf(args) 查找s中args最后一次出现的位置
s.find_first_of(args) s中查找args中任何一个字符第一次出现的位置
s.find_last_of(agrs) s中查找args中任何一个字符最后出现的位置
s.find_first_not_of(args)   在s中查找第一个不在args中的字符
s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
原文地址:https://www.cnblogs.com/huangzhenxiong/p/7773646.html