Articles of iterador

Iteradores de encadenamiento para C ++

Las herramientas de Python implementan un iterador de cadena que esencialmente concatena una cantidad de iteradores diferentes para proporcionar todo desde el iterador individual. ¿Hay algo similar en C ++? Un vistazo rápido a las bibliotecas de impulso no reveló algo similar, lo cual es bastante sorprendente para mí. ¿Es difícil implementar esta funcionalidad?

Itera con for loop o while loop?

A menudo veo código como: Iterator i = list.iterator(); while(i.hasNext()) { … } pero escribo que (cuando Java 1.5 no está disponible o para cada uno no se puede usar) como: for(Iterator i = list.iterator(); i.hasNext(); ) { … } porque Es más corto Lo mantengo en un ámbito más pequeño Reduce la posibilidad de […]

Problema con std :: map :: iterator después de llamar a erase ()

// erasing from map #include #include using namespace std; int main () { map mymap; map::iterator it(mymap.begin()); // insert some values: mymap[‘a’]=10; mymap[‘b’]=20; mymap[‘c’]=30; mymap[‘d’]=40; mymap[‘e’]=50; mymap[‘f’]=60; it=mymap.find(‘a’); mymap.erase (it); // erasing by iterator // show content: for (; it != mymap.end(); it++ ) cout << (*it).first < ” << (*it).second << endl; return 0; […]

¿Cambiar el tamaño de un vector invalida los iteradores?

Encontré que este código C ++: vector a; a.push_back(1); a.push_back(2); vector::iterator it = a.begin(); a.push_back(4); cout << *it; imprime un gran número aleatorio; pero si agrega a.push_back(3) entre la 3ª y la 4ª líneas, se imprimirá 1. ¿Puede explicarme esto?

Comprobando si un iterador es válido

¿Hay alguna manera de verificar si un iterador (ya sea de un vector, una lista, un deque …) es (todavía) desreferenciable, es decir, no ha sido invalidado? He estado usando try – catch , pero ¿hay una forma más directa de hacerlo? Ejemplo: (que no funciona) list l; for (i = 1; i<10; i++) { […]

¿Son const_iterators más rápidos?

Nuestras pautas de encoding prefieren const_iterator , porque son un poco más rápidas en comparación con un iterator normal. Parece que el comstackdor optimiza el código cuando usa const_iterator . ¿Es esto realmente correcto? En caso afirmativo, ¿qué sucede realmente internamente que hace que const_iterator sea ​​más rápido ?. EDITAR: Escribí una pequeña prueba para […]

Algunos ayudan a entender el “rendimiento”

En mi búsqueda eterna de aspirar menos, trato de entender la statement de “rendimiento”, pero sigo encontrando el mismo error. El cuerpo de [someMethod] no puede ser un bloque iterador porque ‘System.Collections.Generic.List ‘ no es un tipo de interfaz de iterador. Este es el código donde me quedé atrapado: foreach (XElement header in headersXml.Root.Elements()){ yield […]

¿Cuál es la razón detrás de cbegin / cend?

Me pregunto por qué cbegin y cend se introdujeron en C ++ 11? ¿Cuáles son los casos cuando llamar a estos métodos hace una diferencia con las sobrecargas de begin y end ?

¿Mover un vector invalida los iteradores?

Si tengo un iterador en el vector a , entonces muevo, construyo o muevo, asigno el vector b desde a , ¿ese iterador aún apunta al mismo elemento (ahora en el vector b )? Esto es lo que quiero decir en el código: #include #include int main(int argc, char *argv[]) { std::vector::iterator a_iter; std::vector b; […]

Preparación para std :: iterator Ser desaprobado

El 21 de marzo, el comité de estándares votó para aprobar la desaprobación de std::iterator iterator propuesta en P0174 : La secuencia larga de argumentos vacíos es mucho menos clara para el lector que simplemente proporcionar los typedef esperados en la definición de la clase en sí misma, que es el enfoque adoptado por el […]