假设有一个整数列表[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)