从普通数组创建QList
Creating a QList from a plain array
我有这个
Struct values[] = {
{ a, b },
{ c, d }
};
我想从中创建一个QList
QList<Struct> ql(values + 0, values + 2);
但由于某种原因,QList
没有合适的构造函数,insert
似乎也没有合适的函数。这是如何工作的呢?我在Qt4.6.
一种解决方案是首先创建std::list
,然后将其转换为QList
:
QList<Struct> ql =
QList<Struct>::fromStdList(std::list<Struct>(values + 0, values + 2));
但是,这将导致数组内容的两个副本,而不是一个。
另一个解决方案是使用std::copy
和back_inserter
:
QList<Struct> ql;
ql.reserve(2);
std::copy(values + 0, values + 2, std::back_inserter(ql));
如果使用数组只是为了方便地初始化QList
,则可以使用插入操作符(假设Struct
定义了正确的构造函数):
QList<Struct> ql;
ql << Struct(a, b)
<< Struct(c, d);
使用fromStdList()静态成员函数作为:
std::list<Struct> stdList(values + 0, values + 2);
QList<Struct> ql = QList<Struct>::fromStdList(stdList);
或者一行:
QList<Struct> ql = QList<Struct>::fromStdList(std::list<Struct>(values + 0, values + 2));
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- Qt C++ - 创建 QList<Myclass> - 不是参数 'T 的有效模板类型参数
- 创建返回 QList <int>的函数
- 警告从结构的 QList 中删除动态创建的结构
- 对QObject进行子分类并创建QList
- 如何创建具有修复索引的QList
- 在c++ /QT中创建抽象类对象的QList
- 从普通数组创建QList
- 无法使用自定义类创建 QList
- 如何创建一个QList的深度拷贝(Qt 4.8)