gpt4 book ai didi

c++ - 运行时和融合序列之间的交互

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:32 26 4
gpt4 key购买 nike

关于我的问题 C++ Tuple of Boost.Range - get Tuple of element types?

我有以下内容:

TupleOfRanges ranges; 
TupleOfElements elements;

std::vector<int> offsets;

所有容器(元和运行时)的大小都是 N。我想编写执行以下操作的代码:

boost::fusion::at_c<0>(elements) 
= *(boost::begin(boost::fusion::at_c<0>(ranges)) + offset[0]);
boost::fusion::at_c<1>(elements)
= *(boost::begin(boost::fusion::at_c<1>(ranges)) + offset[1]);
// ...
boost::fusion::at_c<N>(elements)
= *(boost::begin(boost::fusion::at_c<N>(ranges)) + offset[N]);

我曾尝试使用 Fusion 的 transform 操作编写此代码,但问题似乎是仿函数不知道它正在操作的元素的索引。

我认为是这样的:

elements 
= boost::fusion::transform(boost::fusion::zip(ranges, indices), getValue);

如果我能以某种方式制作包含 int 0...N 的 Fusion 序列 indices 可能会奏效

那么有人可以帮我做一个升序,或者找到一个更好的方法来实现我的目标吗?非常感谢。

最佳答案

您可以使用 boost::mpl::range_c 获得一系列递增的非类型模板参数.您需要将此序列复制到另一个 mpl::sequence,因为范围不满足与 transform 一起使用的所有必要概念要求。该序列可以通过融合进行调整。

关于c++ - 运行时和融合序列之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026542/

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