c++ STL 容器——序列
STL中11个容器类型分别是deque,list,queue,priority_queue,stack,vector,map,multimap,set,multiset,bieset(在比特级处理数据的容器,不讨论)
一些基本的容器特征
表达式 | 返回值 | 说明 | 复杂度 |
XX:iterator | 对应迭代器 | 指针 | 编译时间 |
X u | 创建一个名为u的空容器 | 固定 | |
X u(a) /X u=a | 复制a到u | 线性 | |
a.begin() | 迭代器 | 指向容器的第一个元素 | 固定 |
a.end() | 迭代器 | 指向超尾值迭代器(最后一个元素+1) | 固定 |
a.size() | unsigned int | 返回元素个数 等价于a.end()-a.begin() | 固定 |
a.swap(b) | void | 交换a,b的内容 | 固定 |
a==b / a!=b | bool | 是否完全一样(长度,每一个元素都一样) | 线性 |
序列:
6种容器是序列:deque双端队列,list双向链表,queue队列,priority_queue优先队列,stack栈,vector数组
表达式 | 返回值 | 说明 |
X a(n,t) | 声明一个类型为X,名为a,由n个t组成的序列 | |
X a(i,j) |
声明一个类型X,名为a,并将其初始化为区间【i,j)的内容 |
|
a.insert(p,t) | 迭代器 | 将t插入到p前 |
a.insert(p,n,t) | void | 将n个t插入到p前 |
a.insert(p,i,j) | void | 将区间【i,j)的元素插入到p前 |
a.erase(p) | 迭代器 | 删除p指向的内容 |
erase(p,q) | 迭代器 | 删除区间【p,q】的元素 |
a.clear() | void | 删除所有,等价于a.erase(a.begin(),a.end()); |
其他容器函数:
表达式 | 含义 | 对应容器 |
a.front() | 返回第一个 | vector,list,deque,queue |
a.back() | 返回最后一个 | vector,list,deque,queue |
a.push(pop)_front() | 在第一个前添加(删除) | list,deque |
a.push(pop)_back() | 添加(删除)最后一个 | list,deque,vector |
a[n] / a.at(n) | 返回第n个元素 | a[n]不检查是否越界;a.at(n)检查是否越界 |
栈和队列的成员函数写过了 http://www.cnblogs.com/jinmingyi/p/6798041.html