C++语言程序设计 双向迭代器 ●双向迭代器:在单向迭代器功能基础 迭 上,支持迭代器反向移动 代 --p1指向上一个元素,返回值为p1的引 器 用 p1-返回值为{Pp2=p1;-p1;return p2}
C++语言程序设计 双向迭代器 双向迭代器:在单向迭代器功能基础 上,支持迭代器反向移动 – --p1 指向上一个元素,返回值为p1的引 用 – p1-- 返回值为{P p2=p1; --p1; return p2;} 16 迭代器
C++语言程序设计 随机访问迭代器 ● 随机访问迭代器:在双向迭代器基础上,支 持向前或向后移动个元素。如指针、使用 迭 vector的begin()、end0函数得到的迭代器 代 -p1+=n向前移动n个元素 器 -p1-=n向后移动n个元素 -p1+n获得指向p1前第n个元素的迭代器 -p1-n获得指向p1后第n个元素的迭代器 -p1-p2返回满足p1==p2+n的整数n -p10pp2op可以是<,<=,>,>= -p1[n]等价于*(p1+n) 17
C++语言程序设计 随机访问迭代器 随机访问迭代器:在双向迭代器基础上,支 持向前或向后移动n个元素。如指针、使用 vector的begin()、end()函数得到的迭代器 – p1+=n 向前移动n个元素 – p1-=n 向后移动n个元素 – p1+n 获得指向p1前第n个元素的迭代器 – p1-n 获得指向p1后第n个元素的迭代器 – p1-p2 返回满足p1==p2+n的整数n – p1 op p2 op可以是<,<=,>,>= – p1[n] 等价于 *(p1+n) 17 迭代器
C++语言程序设计 迭代器的区间 两个迭代器表示一个区间:[p1,p2) 迭 ●STL算法常以迭代器的区间作为输入 代 ,传递输入数据 器 ·合法的区间 -p1经过n次(n>0)自增(++)操作后满足p1 ==p2 ●区间包含p1,但不包含p2
C++语言程序设计 迭代器的区间 两个迭代器表示一个区间:[p1, p2) STL算法常以迭代器的区间作为输入 ,传递输入数据 合法的区间 – p1经过n次(n > 0)自增(++)操作后满足p1 == p2 区间包含p1,但不包含p2 18 迭代器
C++语言程序设计 迭代器的辅助数 为所有迭代器提供随机访问迭代器的访问能 力 迭 ●advance(p,n) 代 -对p执行n次自增操作 器 -对双向或随机访问迭代器,n可以取负值 对随机访问迭代器p,相当于p+=n distance(first,last) 计算两个迭代器first和last的距离,即对first执 行多少次“++”操作后能够使得first==last 对随机访问迭代器,相当于last--first
C++语言程序设计 迭代器的辅助函数 为所有迭代器提供随机访问迭代器的访问能 力 advance(p, n) – 对p执行n次自增操作 – 对双向或随机访问迭代器,n可以取负值 – 对随机访问迭代器p,相当于p+=n distance(first, last) – 计算两个迭代器first和last的距离,即对first执 行多少次“++”操作后能够使得first == last – 对随机访问迭代器,相当于last-first 19 迭代器
C++语言程序设计 容器 ● 容器类是容纳、包含一组元素或元素 容 集合的对象。 。七种基本容器: -向量(vector)、双端队列(deque) 器 列表(Iist)、集合(set)、多重集合 (multiset)、映射(map)和多重映射 (multimap) 20
C++语言程序设计 20 容器 容器类是容纳、包含一组元素或元素 集合的对象。 七种基本容器: – 向量(vector)、双端队列(deque)、 列表(list)、集合(set)、多重集合 (multiset)、映射(map)和多重映射 (multimap) 容 器