我有
mpl::vector_c<int, 0, 1, 2, 3, 4, 5>
我想“分配”位置 3 的元素,比如我想将其设置为 30。因此,我必须编写一个元函数,获取和索引、向量和新值并返回修改后的序列。我最终得到了以下解决方案
template <int k, class sequence, class value>
class assign_element
{
typedef typename mpl::begin<sequence>::type begin;
typedef typename mpl::advance<begin, mpl::int_<k> >::type pos;
typedef typename mpl::erase <sequence, pos>::type sequence2;
typedef typename mpl::begin<sequence2>::type begin2;
typedef typename mpl::advance<begin2, mpl::int_<k> >::type pos2;
public:
typedef typename mpl::insert <sequence2, pos2, value>::type type;
};
然后我按如下方式使用它
typedef mpl::vector_c<int, 0, 1, 2, 3, 4, 5> sequence;
typedef typename assign_element<3, sequence, mpl::int_<30> >::type result;
该解决方案有效,但正如您所见,它非常复杂(涉及迭代器、高级......)。这个用例是否存在更简单且可能有效的解决方案?提前致谢!