C矢量文字,或像他们这样的东西 - 代码日志

C矢量文字,或像他们这样的东西

我正在编写一个针对C API的代码,该代码采用向量向量的向量,并且编写如下代码变得繁琐乏味:

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<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", ...) <<
            ... ) <<
        ...
    ;

至少对于平面向量,其他半精通选项是从数组构造的:

string a[] = { "x", "y", "z" };
vector<string> vec(a, a + 3);
http://stackoverflow.com/questions/758118/c-vector-literals-or-something-like-them

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C矢量文字,或像他们这样的东西