我想爲STL list
迭代器獲得較遠的下一個值,但它沒有實現operator+
,vector
雖然有。爲什麼以及如何獲得我想要的價值?爲什麼只有隨機訪問迭代器在C++中實現operator +?
我想我可以做到這一點,如果我打電話operator++
幾次,但沒有那麼一點點髒?
我想要做的是以下幾點:
list<int> l;
...omitted...
list<int>::iterator itr = l.begin() + 3; // but, list iterator does not have
// operator+
什麼是我想要的最好的解決辦法?
(幾乎)無關:您需要確保有可能達到此位置,否則您將調用未定義的行爲。雖然從'list :: begin()'很容易,但在更通用的情況下,知道(對於非RandomAccessIterator)與列表 :: end()相距的唯一方法是調用std ::距離...... O(N)。 –
2010-05-13 18:31:14
這個主題有兩個很好的答案。 +1給社區! – 2010-05-13 18:46:32