8
我有一組類型set<int>
,我想獲得一個迭代器到某個不是開始的位置。從集合中的任意索引獲取元素
我做了以下內容:
set<int>::iterator it = myset.begin() + 5;
我很好奇,爲什麼這是不工作的,什麼是獲得一個迭代器,我想它的正確方法。
我有一組類型set<int>
,我想獲得一個迭代器到某個不是開始的位置。從集合中的任意索引獲取元素
我做了以下內容:
set<int>::iterator it = myset.begin() + 5;
我很好奇,爲什麼這是不工作的,什麼是獲得一個迭代器,我想它的正確方法。
myset.begin() + 5;
只適用於隨機訪問迭代器,其中std::set
的迭代器不是。
對於輸入的迭代器,還有的功能std::advance
:
set<int>::iterator it = myset.begin();
std::advance(it, 5); // now it is advanced by five
在C++ 11,還有也std::next
這是類似的,但不改變它的參數:
auto it = std::next(myset.begin(), 5);
std::next
需要前向迭代器。但由於std::set<int>::iterator
是雙向迭代器,因此advance
和next
都可以使用。
C和C++不是同一種語言。 – 2012-01-18 08:59:37