0

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

4

1 回答 1

1

根据此处的文档, 的at<N>(s)方法boost::fusion::vector返回对包含元素的引用。

此外,如果您使用 1.48 版的 boost 库,它们支持 C++11 的移动语义。这意味着您可以拥有一个函数,该函数针对特定列 no 循环遍历表的大小i,并填充列向量,该列向量是std::vector. 然后,您只需返回此列向量,调用函数将获得moved std::vector。任何时候都不会复制。

您可以在标准页面本身阅读有关移动语义的更多信息。您还可以在此处观看Bjarne Stroustrup 的简短解释视频。跳到第 37 分钟,一直看到第 43 分钟。

于 2012-02-18T08:56:55.997 回答