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?
Echa un vistazo a la boost.assign .
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);