替代std :: next

时间:2018-01-19 22:02:50

标签: c++ iterator

我正在编写C ++代码,其中编译器版本支持std :: next()命令,但是我正在迁移此代码以在编译器不支持C ++的系统上工作11,我需要迁移使用std :: next的部分代码,对此最好的选择是什么?

我需要迁移的代码是:

uint32_t getUint32(uint32_t position, vector<uint8_t> data)
{
    auto it = next(data.cbegin(), position);
    ...
}

2 个答案:

答案 0 :(得分:1)

您可以使用std::advance(名称空间为Repo.insert(changeset) }:

{:ok, struct}

答案 1 :(得分:1)

根据评论中的建议,您可以通过模仿possible implementation实现自己的next功能:*

template<class T>
T mynext(T it, typename std::iterator_traits<T>::difference_type n = 1) {
    std::advance(it, n);
    return it;
}

* 此代码中的所有内容均符合C ++ 03标准。如果您使用此实现,则应properly attribute cppreference source