STD ::转换如何用特定值初始化函子
How std::transform is initializing the functor with a specific value?
i具有以下程序,其中应在increment
类的构造函数中以特定值初始化计数器值。
但是,当它用作 std::transform
中的函子时,这是怎么可能的?
#include <iostream>
#include <algorithm>
class increment
{
int counter;
public:
increment(int val) : counter(val) {}
int operator()(int inc_val)
{
return (counter + inc_val);
}
};
int main()
{
int arr[5] = {1,2,3,4,5};
int n = sizeof(arr) / sizeof(arr[0]);
int step = 2;
std::transform(arr, arr + n, arr, increment(step));
for(auto i = 0; i < 5; ++i)
std::cout << "arr[" << i << "] : " << arr[i] << 'n';
return 0;
}
应用特定值初始化计数器值...
您的 increment
fundor IS 以特定值初始化,在这种情况下为 step
。
std::transform(arr, arr + n, arr, increment(step));
传递A fundor 不是特别的东西,而只是创建一个时间 callable 对象,然后传递该 callable 对象。
如果这使您感到困惑,以下代码对您来说是否更清楚?
// Create the variable named my_functor
increment my_fuctor { step };
// Pass my_functor to std::transform
std::transform(arr, arr + n, arr, my_fuctor);
相关文章:
- 如何用默认值0或-1初始化unordered_set
- 如何用NaN元素初始化双矩阵?
- 英特尔 TBB - "初始化关键部分 Ex":找不到标识符编译器错误
- 英特尔 MKL 稀疏 QR 求解 C++ 返回未初始化错误
- 如何用无效指针初始化unique_ptr的向量
- STD ::转换如何用特定值初始化函子
- 如何用行、列和值初始化 cv::Mat 数组?(在 c++ 类中)
- 如何用三个通道初始化垫子
- 如何用预先计算的十六进制值初始化双数组
- 谁能告诉我如何用字符串初始化 ex 对象
- 如何用new初始化QVector<QVector<QString>>*矩阵(作为类成员)?
- 静态初始化期间将 gcc 构建的 Boost 链接到英特尔 C++ 编译程序时出现 Segfault
- 如何用对象初始化字符串
- 如何用类指针(STL)初始化向量
- 如何用C++数组初始化OpenCL常量向量?[主持人]
- 如何用预制数据初始化指针到指针
- 如何用NULL(c++)初始化对的向量
- 如何用函数的结果初始化静态成员数组
- 如何用多个值初始化boost::mt19937而不使用c++ 11
- C++:初始化英特尔SIMD内部类成员