for_each的便利之处非常明显,它遍历容器中的每个元素,并调用用户指定的函数,对每个元素进行处理。
现在的问题时,我想对处理函数在传入一个参数?
本次提供两种解决的方案,一种是使用利用bind1st(bind2nd类似)实现;另一种是通过类(结构体类似)构造实现,不过有两点需要注意一下:
1)使用bind1st函数时,目标函数需要使用ptr_fun函数适配;
2)使用类构造函数对象时,类要提供对应的仿函数operator ();
从本质上讲,这两种方法分别是以函数对象和类对象的方式传入for_each,至于为什么要这么做,感兴趣的可以看下for_each的源代码,代码举例如下:
void display(std::string str, int val)
{
std::cout << str.c_str() << val << std::endl;
}
class Test
{
public:
Test(std::string s) : str(s) {}
public:
void operator()(int val)
{
std::cout << str.c_str() << val << std::endl;
}
public:
std::string str;
};
int main(int argc, char* argv[])
{
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for_each(vec.begin(), vec.end(), Test("number = "));
for_each(vec.begin(), vec.end(), std::bind1st(ptr_fun(display), "value = "));
return 0;
}
分享到:
相关推荐
for_each 返回值提供了一种方便的方式来获取仿函数的状态,从而实现了更多的数据处理操作。 结论 在本文中,我们详细介绍了 for_each 返回值的使用方法和实现原理。通过 for_each 返回值,我们可以方便地获取仿...
`for_each_file`函数展示了Erlang处理文件系统的通用模式:列举文件,打开每个文件,处理内容,然后关闭文件。这个模式在处理大量文件时非常常见,可以灵活地适应各种需求,如统计、分析、转换或日志处理等。通过...
_For_each_unchecked(_Unchecked(_First), _Unchecked(_Last), _Func); return(_Func); } ``` 其中: - `_InIt`: 迭代器类型,通常为容器中元素的迭代器类型。 - `_Fn1`: 单参数函数对象类型,用于定义操作。 - ...
for_each遍历vector vector中可以是基本类型(int,double,char,string) 也可以是类类型
在本压缩包中,"source codes for_each ML algorithm_deeplearning_神经网络_决策树_随机森林_ma",包含了多种机器学习算法的源代码,包括深度学习、神经网络、决策树以及随机森林等关键领域。这些算法是数据科学和...
本文将通过一个简单的实例来介绍如何使用`parallel_for_each`函数来进行并行计算。 #### 核心概念与技术 1. **并行编程基础**: - **并行编程**是一种编程模型,它允许程序员编写能同时执行多个任务的代码。这种...
list_for_each_entry宏是一个foreach循环,用于遍历链表中的每个节点,并可以根据条件进行搜索。 List.h头文件提供了链表操作的相关函数和宏,包括链表的初始化、插入、删除、遍历和搜索等操作。这些函数和宏都是...
`list_for_each_safe_rcu` 是 `list_for_each_safe` 的 RCU 版本。 ```c #define list_for_each_safe_rcu(pos, n, head, lock) \ for (pos = (head)->next, n = pos->next; pos != (head); \ pos = n, n = pos->...
`for_each_linux` 标签进一步确认了这个程序或库是专门为Linux设计的,用于处理文件系统的迭代操作。 在Linux中,遍历目录通常涉及使用系统调用如 `opendir()`, `readdir()`, 和 `closedir()`。`opendir()` 打开一...
在项目"each7fl"中,开发者可能使用了循环结构(foreach或for)遍历文件夹中的所有图像文件,对每个文件执行以上步骤,实现批量转换。这样的批量处理大大提高了效率,尤其对于处理大量图像时。 标签"C# each7fl...
2. **添加硬件设备**: 当向总线添加一个硬件设备时,首先会调用`device_add`,接着是`bus_attach_device`,然后是`device_attach`,再是`bus_for_each_drv`。 - `bus_for_each_drv`: 遍历总线上的所有驱动,执行一...
matlab导入excel代码utl_calculate_mode_for_each_row 关键词:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala ...
`for_each`是一种通用的迭代器算法,它接受一个输入迭代器范围和一个函数对象,然后对区间内的每个元素调用该函数对象。这通常用于对容器中的所有元素执行某种操作,如打印、转换等。例如: ```cpp #include #...
这里通过`AddValue(10)`创建了一个`AddValue`对象,增量值为10,然后将其传递给`std::for_each`函数,对向量`iVec`中的每个元素执行加10的操作。 #### 总结 通过上述两个示例,我们可以看到函数对象的强大之处在于...
9. **函数和子程序**:"each497"和"vbaexcel"可能就是这样的函数或子程序,它们可能实现了特定的业务逻辑,比如数据处理算法或复杂的计算。 10. **调试和测试**:VBA提供了调试工具,如断点、步进执行、查看变量值...
这个练习“for_each_practice”旨在帮助开发者熟练掌握`for...of`循环的基本用法和实践应用。在JavaScript的世界里,理解和运用好循环结构是至关重要的,因为它在处理数据和执行重复任务时扮演着核心角色。 `for......
`init_show_all_kernel_thread`函数首先定义了要输出的列标题,然后使用`for_each_process`宏遍历所有的进程结构`task_struct`。如果进程没有内存管理结构(`p->mm == NULL`),则认为它是内核线程,然后打印出它的...
`jQuery.each`函数接受三个参数:`object`(需要遍历的对象或数组)、`callback`(遍历处理回调函数)和`args`(可选的回调函数附加参数)。源码中,`each`函数首先判断`object`是否是对象,通过`length`属性排除...
- **遍历设备并实例化**:通过`i2c_for_each_dev`函数遍历适配器上的所有设备,并为每个设备实例化相应的驱动。 #### Input 设备注册过程 Input 设备的注册过程主要包括以下几步: 1. **申请设备内存**:通过`...
测试一展示了基本的函数对象使用,通过`std::for_each`和一个简单的无状态函数对象`f`来累加vector中的所有元素。 测试二中,我们定义了一个名为`CSum`的类,它是一个有状态的函数对象,具有累加功能并能够返回结果...