【发布时间】:2016-03-01 12:01:49
【问题描述】:
我想在向量的向量上应用 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;
});
有没有一种直接的方法可以在一次转换中做到这一点?更清洁的方式?效率更高?
【问题讨论】:
-
@DeepBlackDwarf 不是。 OP想要改变内部和外部向量的类型。
-
@DeepBlackDwarf 也许不是,答案取决于 Told 和 Tnew 是同一类型。
-
关于
Told和Tnew,您是否可以利用任何属性?你能提到具体的类型吗?这个例子看起来很理论/学术。如果您能提供完整的代码示例以供进一步研究会很好... -
Told 是一对点,Tnew 是一个点,但我更喜欢一般的答案。谢谢