STL迭代器与算法

本文介绍了STL中的常用迭代器类型,包括输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机存取迭代器,并详细讲解了如何使用这些迭代器。此外,还探讨了STL算法,特别是查找算法,包括基于相等运算符和谓词的查找,以及查找重复值的方法。这些算法通常通过对迭代器的操作来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STL常用算法

常用容器迭代器

容器迭代器类型
vector随机存取迭代器
deque分段连续,是一种假的连续,随机存取迭代器
list双向迭代器
string随机存取迭代器
set双向迭代器,元素为常量
multiset双向迭代器,元素为常量
map双向迭代器,key值为常量
multimap双向迭代器,key值为常量
array随机存取迭代器
forward_list单向迭代器
unordered_set单向迭代器
unordered_map单向迭代器
unordered_multiset单向迭代器
unordered_multimap单向迭代器
  • 输入迭代器:只能读不能写,只支持++自增运算,如istream_iterator

  • 输出迭代器:只能写不能读,支持++,如ostream_iterator

  • 前向迭代器:提供读写操作,支持++

  • const迭代器:每种容器都有const_iterator,只能读

  • 随机存取迭代器:可读可写,并且可随机+n

  • 双向迭代器:支持++自增,也支持--自减

算法

STL算法都是对迭代器进行操作,beg为开始位置,end为结束位置+1,dest表目的位置

一般算法都会提供两个版本,有个版本可以传入谓词来决定算法的策略

 // 版本1
 template<typename Iterator>
 Algorithm(Iterator itr1, Iterator itr2) 
 {
     ……
 }
 // 版本2
 template<typename Iterator, typename Cmp>
 Algorithm(Iterator itr1, Iterator itr2, Cmp comp)
 {
     ……
 }

 

查找算法

用于在一个序列中搜索一个指定值或一个指定值的序列

并且都提供了两个重载的版本,第一个版本使用底层类型的相等运算符(==)来比较,第二个版本使用用户给定的一元谓词或二元谓词来比较

 // 要求输入迭代器
 find(beg, end, val);        // 返回一个迭代器,指向第一个等于val的元素
 find_if(beg, end, unaryPred);   // unaryPred 为一元谓词
 find_if_not(beg, end, unaryPred);
 count(beg, end, val);       // 返回一个计数器,val出现的次数
 count_if(beg, end, unaryPred);  

查找重复值

 

输入迭代器算法

 copy(beg, end, dest);
未完待续。。。
 ​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值