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-08-02 00:22:10

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

stl函数对象和算法的区别

问题描述 stl函数对象和算法的区别 函数对象和算法都是函数,有什么区别,我知道的区别是函数对象主要处理一个元素,而算法主要处理区间实质是循环语句,请问它们本质区别是什么? 解决方案 算法是提供了一系列运算功能,比如sort排序,find查找等.而函数对象是一个对象,在算法函数中,比如sort等,它能够支持函数对象作为一个参数来提供自己定制化的功能,比如sort可以使用你函数对象自己定义的比较的逻辑. 解决方案二: 算法是解决问题的方法,和函数没有关系.算法抽象独立于语言,而函数是编程语言的一个

ACM STL容器和算法

1.4      STL 的组成 STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有STL其他标准组件.通俗的讲: 容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室--STL里的容器是可容纳一些数据的模板类. 算法:就是往杯子里倒水,往大海里排污,从教室里撵人--STL里的算法,就是处理容器里面数据的方法.操作. 迭代器:往杯子里倒水的水壶,

c-关于C函数指针和可变参数函数问题

问题描述 关于C函数指针和可变参数函数问题 以下程序段在linux用户空间执行成功,在内核空间执行失败,目前没有查清失败原因,所以请高手帮忙看一下! 在用户空间和内核空间分别执行以下程序段函数定义:int test_func(int a void* b){ printk(""a = %dn"" a); printk(""b = %pn"" b); return 1;} 用指针调用函数:int a = 0;int (*func)

php-PHP调用 SAP RFC函数,传入字符串参数,RFC接收到的是空字符串

问题描述 PHP调用 SAP RFC函数,传入字符串参数,RFC接收到的是空字符串 $result = $sap->callFunction( "XXX", array( array( "IMPORT", "I_ZCZLX", "1" ), array( "IMPORT", "I_WRITER", "MAO" ), array( "IMPORT&quo

c++main函数的命令行参数问题

问题描述 c++main函数的命令行参数问题 int main(int argcchar *argv[]);函数从命令行读取参数1.是不是只有生成了test.exe文件之后才能从命令行读取参数(因为我看见 好多都是在命令行输入test.exe后面再加一些参数这样子的),也就是说 我还在调试阶段就不能从命令行输入参数?2.没有从命令行输入参数的时候,argc=1,*argv[0]是程序的路径的名称,如果main后面的括号里面没有东西,是不是意味着我不能在命令行里运行他,因为找不到路径? 解决方案

c++-C++里的函数重载应该只是参数不同对吧。那么不同类型的等号重载返回值不是不一样吗?

问题描述 C++里的函数重载应该只是参数不同对吧.那么不同类型的等号重载返回值不是不一样吗? C++里的函数重载应该只是参数不同对吧.那么不同类型的等号重载返回值不是不一样吗? 解决方案 参数类型不同的函数重载(C++)C++与C语言不同之四--函数重载 解决方案二: c++的函数重载要求函数名相同,形参类型不同或形参个数不同,对返回值没有要求. 虚函数重载要求函数名.形参个数.类型必须相同,这样才能通过基类指针实现多态性.

bind-lambda表达式作为回调函数,无法传入参数。

问题描述 lambda表达式作为回调函数,无法传入参数. 捕获列表一传入参数就导致回调函数调用失败. 一捕获lambda作用域外的变量,就出错! 错误提示: _ 1 IntelliSense: 不存在从 "lambda []void (LONG nReason)->void" 到 "PAmsRouterNotificationFuncEx" 的适当转换函数 f:StudyomsPrinterADSAdsParser.cpp 120_ 调用函数和回调函数申明如下

c-一个有关sort函数第三个参数返回值的疑问

问题描述 一个有关sort函数第三个参数返回值的疑问 #include #include #include using namespace std; const int maxsize = 1000; struct stu{ char name[100]; int age; int score; }; bool cmp(stu a,stu b) { if(a.score < b.score) return true; int temp = strcmp(a.name,b.name); if(te

c++-调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么。。

问题描述 调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么.. 如图的"APICALL" 我调用dll时忽略它可以吗.. 解决方案 APICALL 应该只是一个简单的.空的宏定义,调用时可以不用管 它的作用只是标识函数是系统定义的 API 解决方案二: 函数调用约定.描述参数入栈.清栈方式等. 解决方案三: 不可以啊,这是调用约定,导入导出之类东西,错了函数调用出错,或者编译出问题 解决方案四: 如果是你自己写这个DLL 头文件里面的#if 需要抄下来 编写的