容器相关介绍
来源:互联网 发布:微信营销游戏源码 编辑:程序博客网 时间:2024/06/05 05:09
1、顺序容器
vector 支持快速随机访问 ,代价:中间插入元素开销大 。
list 支持快速插入和删除 ,代价:随机访问开销大 。
deque 双端队列,从两端插入和删除数据都比较快。
2、容器构造函数
C<T> c; 创建一个名为c 的空容器。c 是容器类型名,如vector , T 是元素类型,如int 或string 。适用于所有容器
C c(c2}; 创建容器c2 的副本c; c 和c2 必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器
C c (b , e) ; 创建c ,其元素是迭代器b 和e 标示的范围内元素的副本。适用于所有容器
C c (n , t) ; 用n 个值为t 的元素创建容器C ,其中值t 必须是容器类型c 的元素类型的值,或者是可转换为该类型的值,只适用于顺序容器
C c (n) ; 创建有n 个值初始化C3.3.1 节) Cvalue-initialized) 元素的容器c,只适用于顺序容器
##使用默认构造函数初始化容器##
3、迭代器
迭代器是一种检查容器内元素并遍历元素的数据类型。每一种容器均有各自的迭代器类型,用于访问容器类的元素;
例如vector:
vector<int>::iterator iter;
每种容器都定义了一对命名为begin 和end 的函数, 用于返回迭代器。如果容器中有元素的话,由begin 返回的迭代器指向第一个元素:
vector< int>: : iterator iter = ivec .begin();
上述语句把iter 初始化为由名为begin 的vector 操作返回的值。假设vector 不空,初始化后, iter 即指该元素为ivec[0] 。由end 操作返回的迭代器指向vector 的"末端元素的下一个",通常称为超出末端迭代器,表明它指向了一个不存在的元素。如果vector 为空, begin 返问的迭代器与end 返回的迭代器相同。
这是一个很典型使用vector的STL程式:
1 #include <vector>
2 #include <iostream>
3
4 using namespace std;
5
6 int main() {
7 vector<int> ivec;
8 ivec.push_back(1);
9 ivec.push_back(2);
10 ivec.push_back(3);
11 ivec.push_back(4);
12
13for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter){
14cout << *iter << endl;
15 }
2 #include <iostream>
3
4 using namespace std;
5
6 int main() {
7 vector<int> ivec;
8 ivec.push_back(1);
9 ivec.push_back(2);
10 ivec.push_back(3);
11 ivec.push_back(4);
12
13for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter){
14cout << *iter << endl;
15 }
4、const_iterator
该类型只能用于读取容器内元素,但不能改变其值。当对const_iterator类型进行解引用时,返回的是一个const 值,故不能修改值。
注意:const_iterator 和 const 的iterator的区别:
vector<int>::const_iterator iter1 = vec.cbegin();
*iter = 3; //Error
++iter; //Ok
const vector<int>::iterator iter2 = vec.begin();
*iter = 4; //Ok
++iter; //Error const 迭代器几乎没有什么用处,因为不能让它指向其它元素,只能用它修改指向元素的值。
5、访问容器内元素的操作
c. back () 返回容器c 的最后一个元素的引用。如果c 为空,则该操作未定义。
c. front ( ) 返回容器c 的第一个元素的引用。如果c 为空,则该操作未定义。
c[n] 返回下标为n的元素的引用, 如果n<O 或n>=c .s ize() ,则该操作未定义 。 只适用于vector 和deque 容器。
c.at(n) 返回下标为n 的元素的引用。如果下标越界,则该操作未定义。只适用于vector 和deque 容器。
list是链表存储,并不支持随机访问,所以无法通过下标的方式索引。
0 0
- 容器相关介绍
- linux容器技术-LXC相关技术知识介绍
- 容器相关
- web容器,spring容器,MVC容器介绍
- QT 容器相关
- c++容器相关
- 容器set相关算法
- java 容器 相关
- docker 容器相关命令
- 容器的相关操作
- servlet容器相关
- 容器vector相关知识点
- docker 容器相关命令
- docker容器相关命令
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- 2016 acm香港网络赛 A.A+B problem[FFT]
- HTML地理位置定位
- 一些linux 与磁盘相关命令
- 互信息(Mutual Information)的介绍
- hibernate Cache缓存
- 容器相关介绍
- LibGdx文档译读(十) Preferences接口
- 信息论的熵
- HTML学习小结之HTML标签
- 混淆必知必会
- .net面试题
- Linux下SSH免密码登录
- LeetCodeOJ——10. Regular Expression Matching
- android两种日志获取log4j