我有一个由std::vector
表示的“表格”,其中每个元素都是boost::fusion::vector
。我需要将此表的“列”的表示形式返回为std::vector
,而不复制任何值。这样做的最佳方式是什么?我正在尝试构建一个std::vector
个nviews,其中n是列号,但它似乎不起作用。我是在正确的轨道上还是有其他方法可以解决这个问题?
答案 0 :(得分:1)
根据docs here,at<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分钟。