STL 算法接口及用法说明
来源:互联网 发布:java string == equal 编辑:程序博客网 时间:2024/05/01 07:12
STL::算法::常见算法
CLR/CLRS
表示算法导论一书的几位作者。
“CLRS”:Cormen, Leiserson, Rivest, Stein
“CLR” :Cormen, Leiserson, Rivest,in the first edition,
find 与 find_if
find
根据
equality
操作符,循序(++first)查找[first, last)内的所有元素,找出第一个匹配等同(equality)条件者。如果找到,就返回一个InputIterator指向该元素,否则返回迭代器last:template<typename InputIterator, typename T>InputIterator find(InputIterator first, InputIterator last, const T& value);
find_if
我们放宽相等性equality约束,根据指定的pred(predicate:断言)运算条件(function object),循序查找[first, last)内的所有元素,找出第一个满足断言pred者(断言的返回值是bool类型),也就是把pred(*pos)为真者,如果找到就返回一个InputIterator指向该元素,否则返回迭代器last
template<typename InputIterator, typename Predicate>InputIterator find_if(InputIterator first, InputIterator last, Predicate pred);
transform 的两个版本
在STL的算法(<algorithm>)实现中,一般针对某一函数(也即某一特定算法)都有两个版本(或者叫函数重载),一种是基础版本(表现为最常用或最直观的那种版本),一种是泛化版本。
tranform() 的第一个版本以一元仿函数op作用于输入序列[first, last)中的每一个元素身上,并以其结果返回一个新序列。
template<typename InputIterator, typename OutputIterator, typename UnaryOperation>OutputIterator transform(InputIterator first, InputIterator last, // source OutputIterator result, // destinaton UnaryOperation op);
第二个版本以二元仿函数binary_op作用于一对元素身上,并以其结果产生一个新序列。如果第二个输入序列的长度小于第一个序列,属于undefined behavior。关于undefined behavior更详细的讨论请见<矫情的C++——不明确行为(undefined behavior)>。
template<typename InputIterator, typename OutputIterator, typename BinaryOperation>OutputIterator transform(InputIterator first1, InputIterator last1, InputIterator first2, BinaryOperation op);
lexicographical_compare
#include <utility>
以“字典排列方式”对两个序列[first1, last1)
和[first2, last2)
进行比较。比较操作针对两序列中的对应位置上的元素进行,并持续直到(也即遍历退出的条件,也是for
三条语句的第二条语句):
- (1) 某一组对应元素彼此不相等
- (2) 同时到达
last1
和last2
(两序列的大小相同) - (3)到达
last1
或last2
(也即两序列的大小不同)
template<class InputIterator>bool lexicographical_compare(InputIterator first1, InpoutIterator last1, InputIterator first2, InputIterator last2);template<class InputIterator, class Compare>bool lexicographical_compare(InputIterator first1, InputIterator last1, InputIterator first2, InputIterator last2, Compare comp);
- STL 算法接口及用法说明
- STL 算法接口及用法说明 (二)
- BCP说明及用法
- IsPostBack说明及用法
- keytool用法及说明
- keytool用法及说明
- keytool用法及说明
- keytool用法及说明
- stl算法 find_end的用法
- STL算法 unique的用法
- c++ STL 算法库用法
- STL中部分算法的英文说明
- STL容器及常用算法
- [stl容器及算法小结]
- DBMS_Job包说明及用法
- scrollTop是什么及用法说明
- scrollTop是什么及用法说明
- 指针的用法及说明
- Objective-C中的NSString,rangeOfString,hasPrefix,hasSuffix
- POJ 1176 Party Lamps (DFS)
- xcodex项目配置说明
- 在Linux进行IO的正确姿势
- Cocos2dx一步一步实现Android端热更新(C++)
- STL 算法接口及用法说明
- (原创)一个简洁通用的调用DLL函数的帮助类
- 正确理解ThreadLocal
- android数据存储之SQLite
- Redis和Memcache的区别分析
- Redis中5种数据结构的使用场景介绍
- pdm数据库设计导出excel
- UVa--1636 Headshot(概率)
- collection.toArray(new String[0])中new String[0]的作用