嗨我想通过标量值来(乘法,加法等)矢量,例如myv1 * 3,我知道我可以用forloop做一个函数,但有没有办法用STL函数做到这一点?像{Algorithm.h :: transform function}这样的东西?
我刚读在C++标准std::for_each是一个非修改序列操作,具有沿find,search等等.这是否意味着应用于每个元素的函数不应该修改它们?这是为什么?什么可能出错?
这是一个示例代码,其中修改了序列.你能看到它有什么问题吗?
void foo(int & i)
{
    i = 12;
}
int main()
{
    std::vector<int> v;
    v.push_back(0);
    std::for_each(v.begin(), v.end(), foo);
    // v now contains 12
}
我怀疑这只是一个解释问题,但我想对此有所了解.
PS:我知道我可以用std::transform而不是for_each,但那不是重点.
我想知道是否有可能使用自动返回类型推导功能编写Python函数映射的C++等价物.我的想法是这样的:
vector<int> input({1,2,3});
auto output=apply(input,[](int num){return num*num;});
//output should be a vector {1,4,9}
我知道std::transform,但在目前的情况下,编写一个范围循环似乎更容易.