第九章 顺序容器 (一)

原创 2011年01月24日 10:37:00

顺序容器的类型:

顺序容器:

vector

list

deque

顺序容器适配器

stack

queue

priority_queue

9.1 顺序容器的定义

1)      头文件

#include<vector>

#include<list>

#include<deque>

 

2)      初始化

例如:

vector<int> a1; // 这个时候其实不进行int的初始化操作,

vector<int > a2(a1);

vector<int> a3(a1.begin(),a1.end());

vector<int> a4(n,10);//n10

vector<int> a5(n);//size()==n

 

3)      引用类型没有进入容器的权利~

4)      做容器的容器的时候注意书写

vector< vector<string> > b;//”>>”空格是不能少的!

9.2 迭代器的范围

1) 对于vector deque来说,迭代器可以进行加减运算,大小比较,因为他们是线性的…..

2)  对于end() 总是指向了一个空迭代器

3)  删除元素可以用eraser()

9.3 顺序容器的操作

1) 容器定义的类型别名

size_type          储存容器类型的长度

iterator             迭代器

const_iterator          只读的迭代器

reverse_iterator      逆序迭代器

const_reverse_iterator   逆序只读迭代器

difference_type        足够存储两个迭代器差值的有符号整形

value_type       元素类型

reference                   元素的左值等效于value_type&

const_reference      元素的常量左值等效于 const value_type&

 

2) begin,end//顺序的               rbegin,rend//

4个函数都有两种,一种返回的是非const迭代器,一种返回const迭代器,根据容器的类型决定

 

3)  添加元素

c.push_back(t);

c.push_front(t);//只适用于list deque

c.insert(p,t);//p指向的元素前面插入

c.insert(p,n,t);//p指向的元素前面插入nt

c.insert(p,b,e);//p指向的元素前面插入b->e的元素

 

这些函数只是保存了副本,对原来的变量没有影响

 

例子:

list<string> lst

list<sring> :: iterator iter =lst.begin();

while(cin>>word)

         iter= lst.insert(iter,word);//等效于push_front();

 

任何添加操作都可能使得迭代器失效,不要存储end()返回的迭代器~

 

4)      关系操作符

容器的比较,用到的是容器存储的元素的比较.

 

5)      容器大小的操作

 

c.size();

c.max_size();//返回最多可以容纳的个数

c.empty();//判断是否为空

c.resize(n);//将大小限制为n 多了就减少 少了就增加

c.resize(n,t);// 增加的元素都为t

 

resize操作同样可以使迭代器无效~

 

6)      访问元素

front 或者 back 返回的是引用

 

c.back();

c.front();

c[n]//只适用于vector deque

c.at(n);//只使用与vector deque 如果越界将抛出out_of_range异常

 

7)      删除元素

c.erase(p);//返回删除元素的下一个元素

c.erase(b,e);//同上

c.clear();//删除所有

c.pop_back();//删除容器最后一个元素

c.pop_front();//删除容器第一个元素,只适用于list 或者 deque 容器

 

例子:删除指定值的一个元素

string searchValue(“Quasimodo”);

list<string> :: iterator iter=find(slist.begin(),slist.end(),searchValue);

if(iter!=slist.end())

         slist.erase(iter);

 

8)      赋值与swap

 

c1=c2;

c1.swap(c2);//没有删除插入的操作,在常量时间内进行

c.assign(b,e);//

c.assign(n,t);

相关文章推荐

c++ primer(第五版)笔记 第九章 顺序容器(3)

// 容量管理 // 将 capacity 减少到和 size() 相同 // 用于 vector string deque // 不一定执行 // c.shrink_to_fit() ...

C++ Primer 第九章 顺序容器

表 9.2. 容器构造函数 C c; 创建一个名为 c 的空容器。C 是容器类型名,如 vector,T 是元素类型,如 int 或 string 适用于所有容器。 C c(c...
  • big_bit
  • big_bit
  • 2016年06月14日 19:39
  • 126

C++ Primer 4 第九章 顺序容器

第九章 顺序容器 顺序容器内的元素按其位置存储和访问。标准库定义了三种顺序容器类型:vector、list 和 deque。它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。标准库...

第九章:顺序容器

上接第三章:http://blog.csdn.net/liyangguang1988/article/details/8858776 标准库定义三种顺序容器类型和三种容器适配器: vector  ...

第九章-顺序容器----重学C++之《 C++ PRIMER》

本章讲解了顺序容器以及他们通用的接口操作。 涉及的容器有:顺序容器vector,list,deque,并提及了stack,queue,priority_queue这三种容器适配器。最常用的容器是ve...

《C++ Primer》读书笔记-第九章 01 顺序容器

作者:马志峰 链接:https://zhuanlan.zhihu.com/p/24262745 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 声明: ...

C++ Primer : 第九章 : 顺序容器的定义、迭代器以及赋值与swap

C++ Primer第五版第九章总结
  • JY_95
  • JY_95
  • 2015年08月13日 23:13
  • 1047

顺序容器——C++Primer第九章

容器分类顺序容器包括以下几种: vector 可变大小的数组; deque 双端队列; list 双向链表; forwart_list 单向链表; array 固定大...

《C++ Primer》读书笔记——第九章_顺序容器

《C++ Primer》读书笔记——第九章_顺序容器标签(空格分隔): 未分类一个容器就是一些特定类型对象的集合。顺序容器(sequential container)为程序员提供了控制元素存储和访问顺...

第九章:顺序容器

1. 顺序容器包括       接受容器大小做形参的构造函数只是用于顺序容器,而关联容器不支持这种初始化. 2.C++中,大多数类型都可用作容器的元素类型.容器元素类型必须满足以下两个约束:  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第九章 顺序容器 (一)
举报原因:
原因补充:

(最多只允许输入30个字)