2010-11-18 11 views
16

A veces me canso de todo este ruido my_vector.begin(), my_vector.end(). El año pasado en boostcon, discurso de Andrei Alexandrescu se tituló Iterators Must Go (video)¿Cuál es el estado de los rangos en C++?

¿Hay algún avance en la introducción de rangos en C++, por lo que finalmente puede decir std::sort(my_vector)?

+0

¿Hay alguna marcha para hacer que C++ se parezca más a Python? –

+12

@Mike: uno puede esperar. –

+0

He visto interfaces de algoritmos basadas en rangos en algún lugar mientras leía sobre C++ 0X pero no recuerdo dónde. Entonces me gustaría saber la respuesta ahora. – Klaim

Respuesta

6

Rango en C++ todavía tiene una experiencia insuficiente .
Como implementación experimental actual, hay Boost.Range 2.0 y la biblioteca de rango de horno.

+0

Y cada algoritmo estándar está envuelto en el impulso lib, por lo que al menos 'boost :: sort (my_vector)' (si no 'std :: sort') es * presente *, no futuro. – rafak

2

Por lo que yo sé, no se ha avanzado en ese sentido.

2
#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <iterator> 

template< class Container > 
void sort(Container& c) { sort(c.begin(), c.end()); } 

int main() 
{ 
    using namespace std; 

    int const   data[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 4}; 
    vector<int>   v(data, data + sizeof(data)/sizeof(*data)); 

    sort(v); 
    copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); 
} 

Por supuesto, reemplazar la función del miembro de llama begin y end con llamadas de startOf y endOf (sus versiones), al menos hasta C++ 0x ...

+1

boost :: begin and boost :: finalice el trabajo hasta que tenga soporte para std :: begin y std :: end. –

+2

Eso no responde la pregunta, ¿verdad? – Klaim

+1

@Klaim: responde una de las preguntas, el deseo expreso del OP de poder "finalmente decir' std :: sort (my_vector) '". Noah respondió la pregunta principal. De todos modos, no arruines una buena respuesta insistiendo en que tiene que haber una pregunta. Cheers & hth., –

Cuestiones relacionadas