我想为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