C++Primer STL算法

//1.概览:
//  A:beg和end是表示元素范围的迭代器。
//  B:beg2是表示第二个输入序列开始位置的迭代器。end2表示第二个序列的末尾位置,若没有end2,则假定beg2表示的序列至少与beg和end表示的序列一样大。
//  C:dest是表示目的序列的迭代器,对于给定输入序列,算法需要生成多少元素,目的序列必须能保存同样多的元素。
//  D:unaryPred和binaryPry是一元和二元谓语,分别接受一个和两个参数,都是来自输入序列中的元素,两个谓语都返回可用作条件的类型。
//  E:comp:是一个二元谓语,满足关联容器中对关键字序的要求(严格弱序)
//  F:unaryOp和binaryOp是可调用对象,可分别使用来自输入序列的一个和两个实参调用。

//2.查找对象的算法:
//  A:简单查找算法,要求输入迭代器的算法:
//    find(beg, end, val):返回一个迭代器,指向输入序列中第一个等于val的元素。未找到返回end。
//    find_if(beg, end, unaryPred):返回一个迭代器,指向输入序列中第一个满足unaryPred的元素。未找到返回end。
//    find_if_not(beg, end, unaryPred):返回一个迭代器,指向第一个令unaryPred不成立的元素。未找到返回end。
//    count(beg, end, val):返回一个计数器,指出val出现的次数。
//    count_if(beg, end, unaryPred):返回一个计数器,指出令unaryPred成立的次数。
//    all_of(beg, end, unaryPred):返回一个bool值,指出unaryPred是否对所有元素成立。序列为空返回true。
//    any_of(beg, end, unaryPred):返回一个bool值,指出是否有元素满足unaryPred。序列为空返回false。
//    none_of(beg, end, unaryPred):返回一个bool值,指出是否没有元素能满足unaryPred。序列为空返回true。
//  B:查找重复值的算法,要求前向迭代器:
时间: 2024-12-27 23:30:10

C++Primer STL算法的相关文章

STL算法设计理念 - 函数对象和函数对象当參数和返回值

函数对象: 重载函数调用操作符的类.其对象常称为函数对象(function object),即它们是行为类似函数的对象. 一个类对象,表现出一个函数的特征,就是通过"对象名+(參数列表)"的方式使用一个类对象,假设没有上下文,全然能够把它看作一个函数对待. 这是通过重载类的operator()来实现的. "在标准库中.函数对象被广泛地使用以获得弹性".标准库中的非常多算法都能够使用函数对象或者函数来作为自定的回调行为: demo #include <iostr

STL算法 — sort

能使用STL的sort系列算法的前提是容器的迭代器必须为随机迭代器.所以,vector和deque天然适用.STL的sort算法采用了一些策略,在不同情况下采用不同的排序算法,以达到各种算法优势互补的效果.基本的原则是:数据量大时采用快速排序,数据量小时采用插入排序(这是对快排常用的一种优化策略),递归层次过深改用堆排序. 首先是插入排序.它的平均和最坏时间复杂度都为O(N2),量级小于千,那么插入排序还是一个不错的选择.SGI STL的插入排序默认以增序排列,另外还可以传入一个仿函数作为比较规

C++ 之高效使用STL ( STL 算法分类)

http://blog.csdn.net/zhoukuo1981/article/details/3452118 C++ 之高效使用STL ( STL 算法分类),布布扣,bubuko.com

c++之STL(13) STL 算法 - 查找算法(4)find_first_of(b,e,sb,se) find_first_of(b,e,sb,se,bp)

find_first_of(b,e,sb,se) find_first_of(b,e,sb,se,bp) 使用逆向迭代器 没有find_last_of算法 STL 查找算法 find() find_if() search_n() search() find_end() find_first_of() adjacent_find() string 查找函数和STL查找算法的比较 string函数    STL算法 find()                find() rfind()      

【C/C++学院】0830-兰不达表达式/STL算法-操作数据

兰不达表达式 #include<iostream> #include<vector> #include<algorithm>//算法 lambda表达式,不仅仅适用与array ,也适用于vector void main1() { std::vector<int> myvector; myvector.push_back(11); myvector.push_back(22); myvector.push_back(33); myvector.push_ba

STL源代码分析——STL算法sort排序算法

前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SGI STL中的排序算法不是简单的高速排序,而是交叉利用各种排序:堆排序.插入排序和高速排序:这样做的目的是提高效率.针对数据量比較大的採用高速排序,数据量比較小的能够採用堆排序或插入排序. 本文介绍了有关排序的算法random_shuffle.partition.stable_partition.sort.s

STL算法之排序算法

STL排序算法通常复杂度坏于线性,且必须要random-access Iterators. 所以,forward_list, list, associative and unordered contains 不提供随机访问迭代器,这些容器不能用排序算法. 但是,forward_list,list提供了成员函数sort,associative contains 自动排序,unordered contains不能排序. 通常,排序元素一次要比保持元素有序要更快.STL提供了不同的排序算法,根据需求选

STL 算法[转 ]

STL 算法 STL算法概述 简介: STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包 含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象 注意: 编译器无法检测出所传递的迭代器是一个无效形式的迭代器,当然也无法给出算法函数错误的提示,因为迭代器并不是真实的类别,它只是

STL算法 — copy

为了效率,copy算法可谓无所不用其极,通过分析copy算法能够体会STL的精妙. 首先是三个对外接口: template <class InputIterator, class OutputIterator> // 泛化版本 inline OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result) { return __copy_dispatch<InputIterator,Ou