A Coder’s Corner

Blog de tecnologia y programación

Initializer Lists

Posted by gfaraj on May 17, 2007

Las listas inicializadoras (sin confundiras con las listas de inicialización del constructor) es una caracteristica que va a ser agregada al nuevo estandar de C++. Permitirá la inicialización de clases usando una lista de inicialización como arreglo.

std::vector<int> v = {4, 10, 1, 20};

struct X
{
    int arreglo[3];

    // esta inicializacion no es posible ahorita
    X() : arreglo({1,2,3}) {}
};

Esta caracteristica y la agregación de la clase std::array a la libreria estandar practicamente quitan cualquier necesidad de usar arreglos puros. Veamos como podrian hacer que sus clases puedan ser inicializadas asi.

class MiClase
{
public:
    MiClase(std::initializer_list<int> s)
    {
        for (auto it = s.begin(); it != s.end(); ++it)
            std::cout << *it << " ";
    }
};

MiClase clase = {1, 30, 21, 30, 1};

Como pueden ver, solo tienen que proveer un constructor que tome un initializer_list para obtener esta funcionalidad. Como es esperado, el codigo de arriba imprime 1 30 21 30 1.

Esta caracteristica es un paso más hacia adelante para hacer C++ más flexible y limpio. Hay muchas propuestas como esta que buscan simplificar el codigo que hay que escribir para cosas triviales.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: