STL - 函数作为算法的参数

函数作为参数,相当于C++的函数指针, C#的委托

for_each函数参数:

#include <iostream>
#include <algorithm>
#include <vector>
#include "FuncParamTest.h"
#include "../../Core/ContainerUtil.h"

using namespace std;

void print(int elem)
{
    cout << elem << ‘ ‘;
}

void FuncParamTest::forEachFunc()
{
    vector<int> coll;

    for (int i = 1; i <= 9; ++i)
    {
        coll.push_back(i);
    }

    // print all elements
    for_each(coll.cbegin(), coll.cend(), print);
    cout << endl;
}

void FuncParamTest::run()
{
    forEachFunc();
}

运行结果:
1 2 3 4 5 6 7 8 9

时间: 2024-10-11 07:47:44

STL - 函数作为算法的参数的相关文章

STL进阶--成员函数 vs 算法

容器的成员函数 vs 算法 容器中同名的函数 List: void remove(const T); template<class Comp> void remove_if(Comp); void unique(); template<class Comp> void unique(Comp); void sort(); template<class Comp> void sort(Comp); void merge(list&); template<cl

STL源码剖析——STL函数对象

前言 在STL中,函数对象也是比较重要的,有时候可以限定STL算法的行为,例如在前面介绍的<STL算法剖析>中,每个算法基本上都提供了两个操作版本,其中就用一个版本允许用户指定函数对象,这样可以根据用户的需要对算法进行操作.函数对象是一种具有函数特质的对象,所以可以作为算法的参数.本文介绍的函数对象比较简单,是基于一元或者二元操作结构的算术类函数对象.关系运算类函数对象.逻辑运算类函数对象.在定义函数对象时,为了使其具有函数行为,则必须重载operator()操作符.本文源码出自SGI STL

STL标准库-算法-常用算法

摘要: 摘要: 摘要: 技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each() for一段区间 做你指定的行为 3.replace(), replace_if(), replace_copy() 替换函数 4.count(), count_if() 计数 5.find() 查找 6.sort() 排序 7.binary_search()查看元素是否在

C++标准模板库-STL库基本算法

原文链接:http://blog.csdn.net/wangfengwf/article/details/11580989#t9 16.4  STL库基本算法 标准C++STL库中算法组件为一个很重要的组成部分,该组件提供了大多数最常见的通用算法的实现,并且这些实现是经过很多测试试验并被公认在处理上是高效的.将这些最常见的算法通用化实现,最大的优势就是开发者在应用中不需要为具体的常见算法的实现而费神,只需要包含相应的头文件直接使用即可,不仅仅提高的软件开发的效率,同时还有助于软件重用性的提高.

C++ STL 常用遍历算法

C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性奠定了基 础 3) STL的算法,通过函数对象实现了自定义数据类型的算法运算:所以说:STL的算法也提 供了统一性.                核心思想:其实函数对象本质就是回调函数,回调函数的思想:就是任务的编写者和任务的调用者有效解耦合.函数指针做函数参数.4) 具体例子:transf

STL 函数适配器(function adapter)

函数适配器(function adapter):通过不同函数适配器的绑定,组合和修饰能力,可以实现强大的功能,配合STL泛型算法完成复杂功能. 绑定(bind) template <class _Operation> class binder1st : public unary_function<typename _Operation::second_argument_type, typename _Operation::result_type> { protected: _Ope

常用的 STL 函数

常用的 STL 函数 Table of Contents 介绍 string 队列 最大堆 集合 哈希 map, pair list vector 介绍 容器, 迭代器, 算法 容器: 顺序容器 (vector, list, deque, string), 有序集合 关联容器 (set, multiset, map, multimap), 包含查找元素到键值 迭代器: 遍历容器 traverse container 算法库: 排序, 不可变序, 变序性, 数值 迭代器可以使用 +1 的, vec

STL函数对象和Lambda表达式

1.基本概念 Function object是定义了operator()的object. FunctionObjectType fo; fo(…);调用函数对象的operator()代替函数fo()的调用. 等价于:fo.operator()(…); 函数对象的三个好处: (1) 函数对象可以有自己的状态,因此可能是更聪明的.你可以拥有同一个函数对象的两个实例,它们可能有不同的状态. (2) 每个函数对象是一个类型.你可以把函数对象作为模版的参数用于指定一个特定的行为. (3)函数对象通常比函数

STL 函数对象

一.函数对象? 若一个类重载了运算符 “()”,则该类的对象就成为函数对象 1 class CMyAverage { //函数对象类 2 public: 3 double operator() ( int a1, int a2, int a3 ) { 4 return (double)(a1 + a2+a3) / 3; 5 } 6 }; 7 CMyAverage average; //函数对象 8 cout << average(3,2,3); // average.operator()(3,