2009-02-18 7 views
5
std::sort(range(c)); 

en contraposición aC++ 0x: ¿Sobrecargas de rango para algoritmos estándar?

std::sort(c.begin(), c.end(); 

¿Espera que el próximo estándar para proporcionar sobrecargas rango de algoritmos estándar?

range iterators de Boost son algo similar, y iseq() de Bjarne Stroustrup mencionados en TC++ PL3e son también la misma idea. Miré the latest draft I could find pero no vi las sobrecargas de rango mencionadas.

+0

EDIT: encontré esto: www-sop.inria.fr/geometrica/events/WG21_meeting_june_2008/Stroustrup_C++0x_overview.ppt (o s/ppt $/pdf /). Es de una charla dada por Stroustrup en junio de 2008 en una reunión de WG21. En la diapositiva 30 menciona estas sobrecargas, pero no está claro si están planificadas para el estándar. – wilhelmtell

Respuesta

4

La página History proporciona una respuesta parcial.

Tiene que haber una necesidad imperiosa de agregar sobrecargas al espacio de nombre std. Tenga en cuenta que esto es un problema de biblioteca. Puede buscar en los archivos para encontrar si alguien ha planteado anteriormente una solicitud para agregarlos a la biblioteca. Si no hay ninguno, puede enviar un informe de defectos. El idioma actual no le impide, de ninguna manera, escribir sus propios contenedores. Entonces, la pregunta se reduce a si muchos otros también querrán esto como una característica compatible con la biblioteca estándar o no. Pero eso no es todo. Cualquier extensión, incluso para la biblioteca, no es solo una elección técnica, sino que también está guiada por muchos otros asuntos geopolíticos. Tiene que tener un cierto número de votos para obtener esto.

Francamente, me gustaría ver que esto entra. Sin embargo, recuerde que esto de ninguna manera es una característica novedosa/principal que la biblioteca no puede hacer sin. Así que mantén tus dedos cruzados.

+1

Creo que el código legible y sucinto no es menos esencial e importante que los mensajes de error claros y claros para los que se votaron los conceptos (¡un cambio en el idioma!). Creo que los rangos promoverán el uso de STL. Espero que la gente en el comité de estándares de C++ piense lo mismo. – wilhelmtell

+0

Obligar a una sola sobrecarga en el estándar no es tarea fácil: involucra a cada proveedor de compiladores para proporcionar parches a sus tiempos de ejecución, bibliotecas -> mayor tiempo de comercialización -> estándar nunca es aceptado debido a la demora o la próxima versión es listo ... Obtienes la deriva – dirkgently

0

El bucle for basado en rango es lo único en el borrador del estándar que pude encontrar que usa el concepto de rango. Me parece natural que la mayoría de los algoritmos estándar puedan admitir rangos, pero no se menciona en el borrador del estándar que se vinculó.

+0

También hay iteradores en el capítulo 23 basados ​​en el concepto de rango en TR2. – greyfade