我有一个由 a 表示的“表格”,std::vector
其中每个元素都是 a boost::fusion::vector
。我需要将此表的“列”的表示形式返回为 a std::vector
,而不复制任何值。这样做的最佳方法是什么?我正在尝试构建一个std::vector
nviews ,其中 n 是列号,但它似乎不起作用。我是在正确的轨道上还是有其他方法可以解决这个问题?
问问题
350 次
1 回答
1
根据此处的文档, 的at<N>(s)
方法boost::fusion::vector
返回对包含元素的引用。
此外,如果您使用 1.48 版的 boost 库,它们支持 C++11 的移动语义。这意味着您可以拥有一个函数,该函数针对特定列 no 循环遍历表的大小i
,并填充列向量,该列向量是std::vector
. 然后,您只需返回此列向量,调用函数将获得move
d std::vector
。任何时候都不会复制。
您可以在标准页面本身阅读有关移动语义的更多信息。您还可以在此处观看Bjarne Stroustrup 的简短解释视频。跳到第 37 分钟,一直看到第 43 分钟。
于 2012-02-18T08:56:55.997 回答