顺序容器概述

1. 所有顺序容器都提供了快速顺序访问元素的能力,但是,这些容器在 (1)向容器添加火从容器中删除元素的代价。(2)非顺序访问容器中元素的代价 。两方面都有不同的性能折中。

 

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

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

list     :双向链表,只支持双向顺序访问,在lish中任何位置进行插入/删除元素都很快

forward_list :单向链表。只支持单向顺序访问。在链表任何位置进行插入或者删除速度都很快

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

string:与vector相似的容器,但专门用来保存字符,随机访问很快,在尾部插入/删除速度快

 

通常使用vector是最好的容器,除服有很好的理由选择其他的容器。

较旧的编译器可能需要在两个尖括号之间键入空格 例如:vector >

2 . 容器操作。

类型别名  
iterator 此容器类型的迭代器类型
const_iterator 可读取元素,但不能修改元素的迭代器类型
size_type 无符号整数类型,足够保存此种容器类型最大可能容器的大小
difference_type 带符号整数类型,足够保存两个迭代器之间的距离
value_type

元素类型

reference 元素的左值类型与value_type&含义相同
const_reference 元素的const左值类型,既const value_type&

 

构造函数  
C c 默认构造函数,构造空容器
C c1(c2)

构造c2的拷贝C1

C  c(b,c)

构造c,将迭代器b和c制定的范围内的元素拷贝到c
C c(a,b,c...) 初始化c

 

赋值与swap  
c1 = c2 将c1中的元素替换为c2中元素
c1 = {a,b,c...} 将c1中的元素替换为列表中元素
a.swap(b) 交换a和b的元素
swap(a,b) 等价a.swao(b)

 

 大小  
c.size() c中元素的数目,不支持forward_list
c.max_size() 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
反向容器的额外成员 不支持forward_list
reverse_iterator 按逆序寻址元素的迭代器
const_reverse_iterator 不能修改元素的逆序迭代器
c.rbegin()   c.rend() 返回指向c的尾元素和首元素之间位置的迭代器
c.crbegin(), c.crend() 返回const_reverse_iterator
   

 

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