std ::变换向量的向量

时间:2015-11-27 09:58:02

标签: c++ c++11 vector

我想在矢量矢量上应用std :: transform。此转换应该从std::vector<std::vector<Told>>转换为std::vector<std::vector<Tnew>>

我尝试了以下内容并且有效:

std::vector<std::vector<Told>> source;
//fill source
std::vector<std::vector<Tnew>> dest;
dest.reserve(inliers_pairs.size());
std::transform(begin(source), end(source), std::back_inserter(dest), [](std::vector<Told>& item){
    std::vector<Tnew> new_item;
    new_item.reserve(item.size());
    std::transform(begin(item), end(item), std::back_inserter(new_item), [](Told& inner_item){
        return get_Tnew_from_Told(inner_item);
    });
    return new_item;
});

有没有直接的方法在一次转型中完成?更干净的方式?效率更高?

1 个答案:

答案 0 :(得分:0)

如果定义转化运算符并不能有效地破坏您的类设计并可能导致其他地方出现错误/问题。一种选择是在Tnew类中定义转换构造函数:

apikey

然后:

class Tnew {
    // ...
  public:
    Tnew() = default;
    Tnew(Told const &tn);
    ^^^^^^^^^^^^^^^^^^^^^
    // ...
};

Live Demo