Me gustaría obtener el siguiente valor para el iterador STL list
pero no implementa operator+
, vector
lo tiene. ¿Por qué y cómo puedo obtener el valor donde quiero?¿Por qué solo el iterador de acceso aleatorio implementa operador + en C++?
Creo que puedo hacer eso si llamo a operator++
varias veces, pero ¿no está un poco sucio?
Lo que quiero hacer es la siguiente:
list<int> l;
...omitted...
list<int>::iterator itr = l.begin() + 3; // but, list iterator does not have
// operator+
¿Cuál es la mejor solución para lo que quiero?
(Casi) no relacionado: debe asegurarse de que es posible alcanzar esta posición; de lo contrario, invocará un comportamiento no definido. Aunque de 'list :: begin()' es fácil, en un caso más genérico, la única forma de saber (para no RandomAccessIterator) la distancia con 'list :: end()' es invocar 'std :: distancia' ... O (N) también. –
Dos excelentes respuestas en este hilo. +1 a la comunidad! –