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

returning column from a std vector of fusion vectors, without copying

本文关键字:向量 复制 返回 融合 std      更新时间:2023-10-16

我有一个由std::vector表示的"表",其中每个元素都是boost::fusion::vector。我需要将该表的"列"的表示形式返回为std::vector,而不复制任何值。做这件事最好的方法是什么?我正在尝试构建nviews的std::vector,其中n是列编号,但它似乎不起作用。我是走在正确的轨道上,还是有其他方法可以做到这一点?

根据这里的文档,boost::fusion::vectorat<N>(s)方法返回对所包含元素的引用。

此外,如果您使用的是1.48版本的boost库,它们支持C++11的移动语义。这意味着你可以有一个函数,它在表的大小上循环一个特定的列no,比如i,并填充一个列向量,即std::vector。然后只返回这个列向量,调用函数就会得到movestd::vector。在任何时候都不会复制。

您可以在标准页面上阅读更多关于移动语义的内容。你也可以在这里观看Bjarne Stroustrup简要解释的视频。跳到第37分钟,一直看到第43分钟。