使用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 thingy:
auto it1 = f1.cbegin(); //cbegin() returns const_iterator
auto it2 = f2.cbegin(); //cbegin() returns const_iterator
希望有所幫助。
你在類型之間有一個小的空間有點混淆我 – Antonio
查找索引:http://stackoverflow.com/questions/1796503/index-or-position-in-stdset,得到索引:http://stackoverflow.com/questions/8907435/get-element-from - 任意指數套裝 –