boost::fusion::zip function vs boost::fusion::zip_view
boost::fusion::zip function vs boost::fusion::zip_view
我很痛苦地试图学习boost融合,但我不清楚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函数似乎关系非常密切,但我没有查看何时/为什么使用视图而不是函数。
我希望我能回答您的第二个问题(为什么使用zip_view
而不是zip
)。
问题是zip
生成一个元组序列,该元组序列包含对压缩序列的各个元素的常量引用。在您的示例中,它是vector2<const int&, const char&>
相反,zip_view
为每个元素生成的元组中的引用具有与视图构造函数中的压缩序列相同的常量限定符。你的情况是vector<int&, char&>
。
因此,zip_view
允许zip
不支持的东西:
- 压缩序列元素的修改
- 选择要修改的序列
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- boost::fusion::zip function vs boost::fusion::zip_view
- 带有boost::CRC_32_type的CRC结果与java.util.zip.CRC32不同
- Boost IOStream创建zip文件的示例
- 使用zip迭代器调用boost::compute::sort()会导致构建错误
- 如何绕过构建Boost.在Windows上单独使用zip (gz)支持io流