关于我的问题C++ Tuple of Boost.Range - 获取元素类型的元组?
我有以下内容:
TupleOfRanges ranges;
TupleOfElements elements;
std::vector<int> offsets;
所有容器(元容器和运行时)都是 size 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);
如果我能以某种方式使融合序列indices
包含int 0...N
那么有人可以帮我做一个升序,或者找到更好的方法来实现我的目标吗?非常感谢。