STL 学习笔记 ( 一. 概述 )

 MiYu原创, 转帖请注明 : 转载自 ______________白白の屋    

 

几种常用的容器: map, vector, list, queue,stack, string ( 这个字符串也算个容器 ) 

 

STL容器的共通操作

 

一. 初始化( initialization

 

 

1.产生一个空容器

 

list<int> l;  vector<int> vec;  map<int,int>.......

 

尖括号里面可以是系统类型, 也可以是自定义类型, 表示存放在容器中的类型.

 

2.以另一个容器元素为初值完成初始化

 

  list<int> lst;

 

 

vector<float> vec ( lst.begin(), lst.end() );  

 

  其他的容器都可以类似地 操作, 当然, 每一种容器都有好几个构造函数版本,

具体下面分类介绍.

 

以数组元素为初值完成初始化 

 

int array[]={2,4,6,1345};

 

 

set<int> st ( array, array + sizeof(array) / sizeof(array[0]) );

 

与大小相关的操作( size operator

 

size() -返回当前容器的元素数量

 

empty() -判断容器是否为空

 

max_size() -返回容器能容纳的最大元素数量

 

比较( comparison

 

==,!=,<,<=,>,>=

 

比较操作两端的容器必须属于同一类型

 

如果两个容器内的所有元素按序相等,那么这两个容器相等

 

采用字典式顺序判断某个容器是否小于另一个容器

 

赋值( assignment )和交换( swap

 

swap 用于提高赋值操作效率

 

容器的共通操作

 

与迭代器 iterator 相关的操作

 

begin() -返回一个迭代器,指向第一个元素

 

end() -返回一个迭代器,指向最后一个元素之后

 

rbegin() -返回一个逆向迭代器,指向逆向遍历的第一个元素

 

rend() -返回一个逆向迭代器,指向逆向遍历的最后一个元素之后

 

元素操作

 

insert(pos,e) -将 元素 e 的拷贝安插于 迭代器 pos 所指的位置

 

erase(beg,end) -移除 [beg end] 区间内的所有元素

 

clear() -移除所有元素

 

迭代器( iterator )(示例 : iterator

 

-> 可遍历 STL 容器内全部或部分元素的对象

 

-> 指出容器中的一个特定位置

 

-> 迭代器的基本操作

 

操作
效果
*
返回当前位置上的元素值。如果该元素有成员,可以通 过迭代器以 operator -> 取用
++
将迭代器前进至下一元素
== !=
判断两个迭代器是否指向同一位置
=
为迭代器赋值(将所指元素的位置赋值过去)


迭代器( iterator

 

所有容器都提供获得迭代器的函数 

 

操作
效果
begin()
返回一个迭代器,指向第一个元素
end()
返回一个迭代器,指向最后一个元素之后

 

 STL 学习笔记 ( 一. 概述 )_第1张图片

半开区间 [beg, end) 的好处:

 

1. 为遍历元素时循环的结束时机提供了简单的判断依据( 只要未到达 end() ,循环就 可以继续

 

2.不必对空区间采取特殊处理(空区间的begin()就等于end()

 

 

所有容器都提供两种迭代器

 

container::iterator 读/写 模式遍历元素

 

container::const_iterator 只读 模式遍历元素

 

         迭代器示例: iterator

 

STL 学习笔记 ( 一. 概述 )_第2张图片 

 

迭代器分类

 

双向迭代器

 

-> 可以双向行进 , 以递增运算前进或以递减运算后退。

 

->listsetmap提供双向迭代器

 

随机存取迭代器

 

-> 除了具备双向迭代器的所有属性,还具备随机访问能力。

 

-> 可以对迭代器增加或减少一个偏移量、处理迭代器之间的

 

  距离或者使用<>之类的关系运算符比较两个迭代器。

 

-> vector deque string 提供随机存取迭代器

 

 

 

 

你可能感兴趣的:(学习笔记)