【发布时间】:2014-04-02 12:09:56
【问题描述】:
考虑标准使用 std::transform 算法:
vector<int> in = { 1, 2, 3 };
auto f0 = [](int val) { return val + 1; };
auto f1 = [](int val) { return val > 1; };
vector<int> out0(in.size());
std::transform(in.begin(), in.end(), out0.begin(), f0);
vector<bool> out1(in.size());
std::transform(in.begin(), in.end(), out1.begin(), f1);
这很好用,但写起来很长。我想写这样的东西:
auto out0 = tranform(in, f0);
auto out1 = tranform(in, f1);
如何重载转换算法以允许这种语法?
【问题讨论】:
-
不需要声明尺寸。使用 std::back_inserter。
标签: c++ algorithm c++11 transform std