jueves, 31 de enero de 2013

Inicializar un std::vector en C++

Lo primero que tenemos que hacer es crear la plantilla que se va a utilizar para inicializar los vectores:

template <typename T>
class init_vector {

public:

init_vector<T>& operator<< (const T& value) {
    internal_vector.push_back(value);
    return *this;
}

operator std::vector<T>() const {
    return internal_vector;
}

private:

std::vector<T> internal_vector;

};

A la hora de inicializar un vector podemos utilizar esta plantilla de manera muy sencilla y elegante:

std::vector<int> v = init_vector<int>() << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9;
std::vector<string> empresas = init_vector<string>() << "Google" << "Microsoft" << "Apple" << "Nokia";



No hay comentarios:

Publicar un comentario