std::next的替代方案 我正在研究一个C++代码,编译器版本支持STD::NEXT()命令,但是我正在迁移这个代码,在一个编译器不支持C++ 11的系统上工作,我需要迁移一个使用STD的代码:接下来,什么是最好的替代方案?

std::next的替代方案 我正在研究一个C++代码,编译器版本支持STD::NEXT()命令,但是我正在迁移这个代码,在一个编译器不支持C++ 11的系统上工作,我需要迁移一个使用STD的代码:接下来,什么是最好的替代方案?,c++,iterator,C++,Iterator,我需要迁移的代码是: uint32_t getUint32(uint32_t position, vector<uint8_t> data) { auto it = next(data.cbegin(), position); ... } uint32获取uint32(uint32位置,矢量数据) { auto it=next(data.cbegin(),位置); ... } 您可以使用(命名空间std假定): vector::const_iterator it=d

我需要迁移的代码是:

uint32_t getUint32(uint32_t position, vector<uint8_t> data)
{
    auto it = next(data.cbegin(), position);
    ...
}
uint32获取uint32(uint32位置,矢量数据)
{
auto it=next(data.cbegin(),位置);
...
}
您可以使用(命名空间
std
假定):

vector::const_iterator it=data.begin();
推进(it、位置);
您可以使用(命名空间
std
假定):

vector::const_iterator it=data.begin();
推进(it、位置);

正如评论中所建议的,您可以通过模仿以下命令来实现自己的
下一步
功能:*

模板
T mynext(T it,typename std::iterator\u traits::difference\u type n=1){
std::advance(it,n);
归还它;
}

*这段代码中的所有内容都与C++03兼容。如果使用此实现,您应该按照注释中的建议执行。

,您可以通过模仿以下命令来实现自己的
next
功能:*

模板
T mynext(T it,typename std::iterator\u traits::difference\u type n=1){
std::advance(it,n);
归还它;
}
*这段代码中的所有内容都与C++03兼容。如果使用此实现,则应使用。

请参阅“请参阅”
vector<uint8_t>::const_iterator it = data.begin();
advance(it, position);
template<class T>
T mynext(T it, typename std::iterator_traits<T>::difference_type n = 1) {
    std::advance(it, n);
    return it;
}