gpt4 book ai didi

c++ - boost::fusion::zip 函数与 boost::fusion::zip_view

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:57 25 4
gpt4 key购买 nike

我正在努力学习 boost fusion,但我不清楚 zip_view 和 zip 函数结果之间的区别。

namespace fuz = boost::fusion;

typedef fuz::vector<int,int> vec1;
typedef fuz::vector<char,char> vec2;
typedef fuz::vector<vec1&, vec2&> sequences;

typedef fuz::zip_view<sequences> zip_view_type;

typedef fuz::result_of::zip<vec1, vec2>::type zip_result_type;

BOOST_MPL_ASSERT((boost::is_same<zip_view_type, zip_result_type>));
  • 我原以为这两种类型是相同的,但事实并非如此。为什么?

  • zip_view 和 zip 函数似乎关系密切,但我不知道查看何时/为何使用 View 而不是函数。

最佳答案

我希望我能回答你的第二个问题(为什么使用 zip_view 而不是 zip )。

问题是zip生成一个元组序列,其中包含对压缩序列的各个元素的常量 引用。在您的示例中,它是 vector2<const int&, const char&>

相比之下,zip_view 生成的元组中的引用对于每个元素都具有与 View 构造函数中的压缩序列相同的 const 限定符。它将是 vector<int&, char&>在你的情况下。

因此,zip_view允许 zip 的东西不支持:

  1. 修改压缩序列的元素;
  2. 选择要修改的序列。

关于c++ - boost::fusion::zip 函数与 boost::fusion::zip_view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com