如何在c ++中创建一个map函数?

yes*_*aaj 7 c++ list map

假设有一个整数列表[1,2,3,4,5]和一个map函数,它将每个元素与10相乘并将修改后的列表返回为[10,20,30,40,50],而不修改原始元素名单.如何在c ++中有效地完成这项工作.

jas*_*son 18

这是一个例子:

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int multiply(int);

int main() {
    vector<int> source;
    for(int i = 1; i <= 5; i++) {
    source.push_back(i);
    }

    vector<int> result;
    result.resize(source.size());
    transform(source.begin(), source.end(), result.begin(), multiply);

    for(vector<int>::iterator it = result.begin(); it != result.end(); ++it) {
        cout << *it << endl;
    }
}

int multiply(int value) {
    return value * 10;
}
Run Code Online (Sandbox Code Playgroud)


msa*_*ord 10

沿着@darids答案,但是C++ 03(原帖时的当前):

#include <vector>
#include <algorithm>
#include <functional>

std::vector<int> src;
std::vector<int> dst;

std::transform(src.begin(), src.end(),
               std::back_inserter(dst),
               std::bind1st(std::multiplies<int>(), 10));
Run Code Online (Sandbox Code Playgroud)