vectors example español c++ vector literals

example - vector iterator c++



Literales de vectores C++, o algo así (3)

Básicamente, no existe una sintaxis incorporada para hacerlo, porque C ++ no sabe acerca de los vectores éter; solo son de una biblioteca conveniente.

Dicho esto, si está cargando una estructura de datos complicada, debe cargarla desde un archivo o algo similar; el código es demasiado frágil de lo contrario.

Estoy escribiendo un código contra una API de C ++ que toma vectores de vectores de vectores, y se está volviendo tedioso escribir código como el siguiente en todas partes:

vector<string> vs1; vs1.push_back("x"); vs1.push_back("y"); ... vector<string> vs2; ... vector<vector<string> > vvs1; vvs1.push_back(vs1); vvs1.push_back(vs2); ... vector<vector<string> > vvs2; ... vector<vector<vector<string> > > vvvs; vvvs.push_back(vvs1); vvvs.push_back(vvs2); ...

¿C ++ tiene una sintaxis literal de vector? Es decir, algo así como:

vector<vector<vector<string>>> vvvs = { { {"x","y", ... }, ... }, ... }

¿Hay alguna forma no integrada de lograr esto?



En C++0x , podrás usar la sintaxis deseada:

vector<vector<vector<string> > > vvvs = { { {"x","y", ... }, ... }, ... };

Pero en el C ++ de hoy, estás limitado a usar boost.assign que te permite:

vector<string> vs1; vs1 += "x", "y", ...; vector<string> vs2; ... vector<vector<string> > vvs1; vvs1 += vs1, vs2, ...; vector<vector<string> > vvs2; ... vector<vector<vector<string> > > vvvs; vvvs += vvs1, vvs2, ...;

... o usando contenedores de Qt que te permiten hacerlo de una vez:

QVector<QVector<QVector<string> > > vvvs = QVector<QVector<QVector<string> > >() << ( QVector<QVector<string> >() << ( QVector<string>() << "x", "y", ...) << ... ) << ... ;

La otra opción semi-sana, al menos para vectores planos, es construir a partir de una matriz:

string a[] = { "x", "y", "z" }; vector<string> vec(a, a + 3);