estoy de acuerdo tanto con Andrei y Konrad y yo :-)
El concepto más fundamental no es una interfaz de un iterador y que es bastante obvio en cualquier trabajo que alguien haga hoy (que tiene que ver con biblioteca cruzada, lenguaje cruzado, compilador cruzado, sistema operativo cruzado, plataforma cruzada, nombre cruzado :-)
Ni iterador ni rango (aparte de la fuente -lev el use) ofrece algo más que un puntero limpio y simple, no intrusivo o intrusivo, no compartido o compartido, no único o único. Limpiar el puntero a los datos mecanografiados simplemente se pone universal y puede hacer que los datos sean mutables o inmutables y muchas otras cosas. Toda la interfaz es solo otro nivel de direccionamiento indirecto a la vez que sigue siendo amigable con la máquina y el compilador de todo tipo, además de mucho más segura, relegando los iteradores y el uso del rango a un detalle de implementación.
Hasta ese punto, IEnumerable y IQueryable hacen la mitad de 'lo correcto' TM pero son claramente inferiores en sus conceptos de iteración y mucho más que lo que puede hacer con STL, retener el control y así sucesivamente (pero otoh, tienen mejores metadatos y, por lo tanto, un modelo mejor y más limpio). Siendo un punto con las interfaces puede construir cualquier abstracción que desee y satisfaga, probablemente contraversial pero esencialmente no obvia: óptimo, y representación y código de datos neutrales en tiempo de ejecución o en tiempo de compilación (diablos esencial para algoritmos y compiladores y máquinas virtuales y lo que no) .
Incluso es posible optimizarlo para sistemas 'dinámicos'/componentes hasta la alineación 'en tiempo de ejecución' (tornillo HotSpot VM :-) .. Hasta ese punto, el avance a 1975 es mínimo como lo evidencia una enorme industria de interoperabilidad carga de trabajo (está donde sea que mire, incluyendo este sitio, su uso de tecnología patentada y abierta, etc., en idealismo informático, bueno, este tipo de 'trabajo' de interfaz no debería existir si) ..
Probablemente debería ser una wiki de la comunidad. – Brian
Demasiado tarde, pero no lo creo: es una discusión relacionada con la programación que definitivamente intercambia hechos, no (solo) opiniones. –
Me pregunto por qué no tiene su función find() devuelve algo así como boost :: optional –