从融合向量的std向量返回列,无需复制

时间:2012-02-17 23:01:41

标签: c++ templates boost template-meta-programming boost-fusion

我有一个由std::vector表示的“表格”,其中每个元素都是boost::fusion::vector。我需要将此表的“列”的表示形式返回为std::vector,而不复制任何值。这样做的最佳方式是什么?我正在尝试构建一个std::vector个nviews,其中n是列号,但它似乎不起作用。我是在正确的轨道上还是有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据docs hereat<N>(s)的{​​{1}}方法会返回对所包含元素的引用。

此外,如果您使用的是boost库版本1.48,它们也支持C ++ 11的移动语义。这意味着您可以使用一个函数来循环覆盖特定列的表的大小,例如boost::fusion::vector,并填充一个i的列向量。然后,您只需返回此列向量,调用函数将获得std::vector d move。任何时候都不会制作副本。

您可以在标准页面上阅读有关move semantics here的更多信息。您还可以观看Bjarne Stroustrup explaining it in brief here的视频。跳到第37分钟,观察到第43分钟。