从融合向量的标准向量返回列,而不复制

发布于 2025-01-06 22:29:09 字数 214 浏览 0 评论 0原文

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

I have a "table" represented by a std::vector where every element is a boost::fusion::vector. I need to return a representation of a "column" of this table as a std::vector, without copying any values over. What is the best way of doing this? I am trying to construct a std::vector of nviews where n is the column number, but it does not seem to be working. Am I on the right track or are there other ways of going about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神经暖 2025-01-13 22:29:09

根据此处的 文档boost::fusion::vectorat(s) 方法返回对所包含元素的引用。

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

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

As per the docs here, the at<N>(s) method of the boost::fusion::vector's return a reference to the contained element.

Also if you are using boost library version 1.48, they support the move semantics of C++11. What this means is you can have a function which loops over the size of your table for a particular column no, say i, and populates a column vector which is an std::vector. You then just return this column vector and the calling function would get the moved std::vector. No copies are made at any point.

You can read more about the move semantics here at the standards page itself. You can also watch the video of Bjarne Stroustrup explaining it in brief here. Jump to minute 37 and watch till minute 43.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文