我有这个
Struct values[] = {
{ a, b },
{ c, d }
};
Run Code Online (Sandbox Code Playgroud)
我只是想创造一个QList它
QList<Struct> ql(values + 0, values + 2);
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,QList没有合适的构造函数,看似没有合适的insert功能.这是如何运作的?我在Qt4.6上.
Luc*_*lle 14
一种解决方案是首先创建一个std::list然后将其转换为QList:
QList<Struct> ql =
QList<Struct>::fromStdList(std::list<Struct>(values + 0, values + 2));
Run Code Online (Sandbox Code Playgroud)
但是,这会产生两个数组内容副本而不是一个副本.
另一种解决方案是使用std::copy一个一起back_inserter:
QList<Struct> ql;
ql.reserve(2);
std::copy(values + 0, values + 2, std::back_inserter(ql));
Run Code Online (Sandbox Code Playgroud)
如果你使用数组只是为了有一个简单的方法来初始化QList,你也许可以使用插入运算符(假设Struct定义了正确的构造函数):
QList<Struct> ql;
ql << Struct(a, b)
<< Struct(c, d);
Run Code Online (Sandbox Code Playgroud)