我有一个 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/