用作std::advance
:
std::advance(it2, index1); //increments it2 index1 times!
完毕!
如果您不知道 的值index1
,那么您始终可以使用当前 it1
计算它:
auto index1 = std::distance(f1.begin(), it1);
:-)
请注意,std::advance
返回void
所以你不能这样写:
fun(f2.begin(), std::advance(it2, index1)); //error
相反,如果你必须这样写:
std::advance(it2, index1); //first advance
fun(f2.begin(), it2); //then use it
因此,为了简化这种用法,std::next
在 C++11 中添加了:
fun(f2.begin(), std::next(f2.begin(), index1)); //ok, don't even need it2!
顺便说一句,在 C++11 中,您可以使用auto
typename 来代替:
auto it1 = f1.cbegin(); //cbegin() returns const_iterator
auto it2 = f2.cbegin(); //cbegin() returns const_iterator
希望有帮助。