c++ - std::vector::assign 等效于 QVector

标签 c++ qt

我有一个 C 风格的数组,我想将它分配给一个 QVector。如果我使用 std::vector,我会使用 assign():

int arr[] = { 1, 2, 3, 4, 5 };
std::vector<int> v;
v.assign(arr, arr + sizeof(arr)/sizeof(int));

但对于 QVector,我找不到类似的 assign() 方法,或任何接受范围的构造函数。

我已经编写了一个 for 循环来执行此操作,但令我惊讶的是没有这样一个基本函数,真的是这样吗,或者是否有等效的函数?

最佳答案

您可以使用 Qt 的 qCopy() :

int arr[] = { 1, 2, 3, 4, 5 };
QVector<int> v(5);
qCopy(arr, arr+5, v.begin());

当然,您也可以使用 std::copy()

int arr[] = { 1, 2, 3, 4, 5 };
QVector<int> v(5);
std::copy_n( &arr, 5, v.begin() );
// or more general:
QVector<int> v2;
std::copy(std::begin(arr), std::end(arr), std::back_inserter(v2));
// without begin/end
std::copy(arr, arr + 5, std::back_inserter(v2));

关于c++ - std::vector::assign 等效于 QVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559655/

相关文章:

c++ - 程序在哪里为抛出对象分配内存?

c++ - 以位计数递增顺序遍历整数的每个位掩码

qt - QGridLayout,3个 Pane ,无法正确扩展

c++ - 一键链接不同类型的Qt multimap

c++ - 对自制类对象进行不区分大小写的排序

c++ - 存在 ARM GNU 编译器 -j[jobs] 选项

c++ - gcc 4.8 中静态 constexpr 成员数组的初始化

qt - 使用 QML 隐藏/显示 SVG 文件的一部分

qt - 如何使 wkhtmltopdf 在 Debian 9 "Stretch"上的 Odoo v10 中工作?

android - Qt/QML Android 3rd 方虚拟键盘不适用于 TextInput