我正在针对 C++ API 编写一些代码,该 API 采用 vector 的 vector ,并且到处编写如下代码变得乏味:
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++ 有 vector 字面量语法吗?即,类似:
vector<vector<vector<string>>> vvvs =
{ { {"x","y", ... }, ... }, ... }
有没有非内置的方法来完成这个?
最佳答案
在 C++0x你will be able使用您想要的语法:
vector<vector<vector<string> > > vvvs =
{ { {"x","y", ... }, ... }, ... };
但在今天的 C++ 中,您只能使用 boost.assign这可以让你做到:
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, ...;
... 或使用 Qt's containers让您一口气完成:
QVector<QVector<QVector<string> > > vvvs =
QVector<QVector<QVector<string> > >() << (
QVector<QVector<string> >() << (
QVector<string>() << "x", "y", ...) <<
... ) <<
...
;
另一个半理智的选择,至少对于平面 vector ,是从数组构造:
string a[] = { "x", "y", "z" };
vector<string> vec(a, a + 3);
关于C++ vector 字面量,或类似的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/758118/