顺序容器

1.容器:特定类型对象的集合,容器均为模板类(表9.1)

vector:可变大小数组。支持快速随机访问,在尾部之外的位置插入或删除元素可能很慢

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

list:双向链表。只支双向顺序访问,在任何位置插入删操作速度很快

forward_list:单向链表。只支持单向顺序访问,在任何位置插入删操作速度很快。

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

string:与vector相似,但专用于保存字符。支持快速随机访问,在尾部插入删除速度很快。


2.所有容器都支持的操作(表9.2)

<strong>类型别名:</strong>
iterator 迭代器类型
const_iterator 可以读取元素但不能修改元素的迭代器
size_type无符号整数类型,足够保存此容器类型的最大可能大小
difference_type  带符号整数类型,足骨保存两个迭代器的距离
value_type元素类型
reference; 即 value_type &
const_reference<span style="font-family: Arial, Helvetica, sans-serif;">即 const value_type &</span>

<strong>构造函数:</strong>
C c默认构造函数,构造空容器
C c1(c2)构造c2的拷贝c1
C c(b,e)构造c1将迭代器b,e指定范围的元素拷贝到c,(array不支持)
C c{a,b,c,d,,,}列表初始化
<strong>赋值与swap:</strong>
c1=c2;
c1={a,b,c,d,,,}
a.swap(b) 交换a,b元素
swap(a,b)   <span style="font-family: Arial, Helvetica, sans-serif;"> 交换a,b元素</span>

<strong>大小:</strong>
c.size()元素数目 (forward_list不支持)
c.max_size() 最大元素数目
c.empty()
<strong>迭代器:</strong>
c.begin()  c.end()
c.rbegin()  c.rend()
<strong>反向容器:</strong>
reverse_iterator
const_reverse_iterator
c.rbegin()  c.rend()
c.crbegin()  c.crend()
 
 
<strong>3.容器定义及初始化(表9.3)</strong>
C c  若c为array,则元素按照默认方式初始化,否则为空容器
C c1(c2)
C c1=c2
C c{a,b,c,,,}
C c={a,b,c,,,}
C c(b,e)   array不适用
只有顺序容器(不包括array)的构造函数才能接受大小参数
C seq(n)  string不适用
C seq(n,t) 
 
 
<strong>4.添加元素(非array)(表9.5)</strong>
forward_list不支持push_back,emplace_back,且有自己的insert,emplace,
c.push_back(t)  
c.emplace_back(args)  尾部添加元素,返回空       适用于vector deque list string
 
 
c.push_front(t)
c.emplace_front(t)  头部添加元素,返回空  适用于deque list forward_list
 
 
c.insert(p,t)  
c.emplace(p,args)  在<span style="font-family: Arial, Helvetica, sans-serif;">迭代器p之前添加元素,返回指向新元素的迭代器</span>
c.insert(p,n,t)   在迭代器之前插入n个t值元素,返回新添加的第一个元素的迭代器
c.insert(p,b,e)  b,c不能指向c中的元素,返回新添加的第一个元素的迭代器
c.insert(p,il)  在迭代器之前元素值列表,返回新添加的第一个元素的迭代器  适用于除farward_list之外的所有元素,forward_list有自己版本的insert emplace
 
 
<strong>5.访问元素</strong><span style="font-family: Arial, Helvetica, sans-serif;">(表9.6)</span>

<strong style="font-family: Arial, Helvetica, sans-serif;"></strong>

at 与下标只适用于string vector deque array
c.back()不适用于forward_list
c<strong>.</strong>back()
c.front()
c[n]
c.at(n)
 
 
<strong>6.删除元素(表9.7)</strong>
farword_list有自己特有的erase
farword_list不支持pop_back()
string vector不支持pop_front()
c.pop_back()  删除尾元素,返回空
c.pop_front() 删除首元素,返回空
c.erase(p) 删除迭代器指向的元素,返回被删元素的后的元素的迭代器
c.erase(b,e) 返回一个指向最后一个删除的元素的后一个元素的迭代器
c.clear() 删除所有元素,返回空
 
 
<strong>7 forward_list(表9.8)</strong>
lst.before_begin
lst.cbefore_begin 首前迭代器,不能解引用
 
 
lst.insert_after(p,t) 
lst.insert_after(p,n,t)
lst.insert_after(p,b,e)
lst.insert_after(p,il)在迭代器之后的位置插入元素,返回最后一个插入的元素的迭代器
 
 
lst.emplace_after(p,args) 
lst.erase_after(p)
lst.erase_after(b,e)返回之后一个被删除的元素的后一个元素的跌大气
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(顺序容器)