第九章 顺序容器 (一)

原创 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);

【第九章】顺序容器

● 元素在顺序容器中的顺序与其加入容器时的位置相对应。关联容器中元素的位置由元素相关联的关键字值决定。● 在 deque两端添加或删除元素与list或forward_list添加删除的速度相当。●...
  • qq_34536551
  • qq_34536551
  • 2017年12月08日 11:46
  • 26

第九章:顺序容器

1. 顺序容器包括       接受容器大小做形参的构造函数只是用于顺序容器,而关联容器不支持这种初始化. 2.C++中,大多数类型都可用作容器的元素类型.容器元素类型必须满足以下两个约束:  ...
  • yuanweihuayan
  • yuanweihuayan
  • 2011年03月27日 21:43
  • 1341

第九章:顺序容器

上接第三章:http://blog.csdn.net/liyangguang1988/article/details/8858776 标准库定义三种顺序容器类型和三种容器适配器: vector  ...
  • liyangguang1988
  • liyangguang1988
  • 2013年05月25日 13:55
  • 602

第九章 顺序容器

1. 顺序容器类型   vector   可变数组   deque  双端队列   list       双向列表  forward_list  单项列表  array 固定数组 string 数组,...
  • helainthus
  • helainthus
  • 2016年03月11日 18:01
  • 69

第九章-顺序容器

顺序容器 1 顺序容器概述 顺序容器类型 vector 可变大小数组。支持快速随机访问。在尾部之外插入/删除元素可能很慢 deque 双端队列。支持快速随机...
  • DevilDatin
  • DevilDatin
  • 2014年12月15日 15:26
  • 148

第九章 顺序容器

顺序容器和数组
  • zk2802996
  • zk2802996
  • 2014年05月29日 23:27
  • 271

SQL第九章数据查询基础上机题1-4

//查询学生相关基本信息 SELECT * FROM Student WHERE GradeId=1 SELECT StudentName,Phone FROM Student WHERE Gra...
  • qq_36074113
  • qq_36074113
  • 2016年11月22日 17:18
  • 412

C++ 顺序容器总结

标准库定义了3中顺序容器:vector、list、deque 一、顺序容器的定义 #include #include #include vector ivec; list ilist; 1、顺序...
  • h_wlyfw
  • h_wlyfw
  • 2014年02月12日 15:10
  • 946

第九章 顺序容器(上)

标准库里面定义了三种顺序容器:vector(支持快速随机访问),list(支持快速插入/删除),deque(双端队列)。标准库还提供了三种适配器:stack(后进先出(栈)),queue(先进先出(队...
  • liujiyu1989
  • liujiyu1989
  • 2015年08月21日 08:45
  • 101

c++primer学习笔记 ( 第九章 顺序容器)

9.1顺序容器的定义 #include #include #include vector ivec;   //定义一个空的vector类型, vector ivec2(ivec);  /...
  • xujinsmile
  • xujinsmile
  • 2012年03月23日 23:30
  • 1068
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第九章 顺序容器 (一)
举报原因:
原因补充:

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