我的问题/担忧是关于要在std::transform()
.
在下面的代码中,如果我在平方函数的整数参数中使用了“按引用传递” i
(即int squared(int i))
,它不会编译。
我必须将其更改为按值传递,以便编译。谁能告诉我为什么以及这是否是使用的约束std::transform()
?
可以同时std::for_each()
使用“按值传递”和“按引用传递”方法(如 中所示print()
)。
提前致谢。
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
int squared(int i);
void print(int &i);
int main()
{
std::vector<int> intVec;
std::vector<int> newIntVec;
for (int i = 0; i < 10; ++i)
intVec.push_back(i);
std::for_each(intVec.begin(), intVec.end(), print);
std::cout << std::endl;
std::transform(intVec.begin(), intVec.end(), std::back_inserter(newIntVec), squared);
std::for_each(newIntVec.begin(), newIntVec.end(), print);
std::cout << std::endl;
return 0;
}
int squared(int i)
{
return i*i;
}
void print(int &i)
{
std::cout << i << " ";
}