从数组初始化 QVector

2024-02-21

我从函数接收一个数组作为指针,并希望从中初始化一个 QVector。

现在我这样做:

void foo(double* receivedArray, size_t size)
{
    QVector<double> vec(size);

    std::copy(receivedArray, receivedArray + size, std::begin(vec));
}

这样做是否同样可能:

void foo(double* receivedArray, size_t size)
{
    QVector<double> vec(size);

    vec.data() = receivedArray;
}

这会破坏某种我不知道的 Qt 机制吗?


第一个做了不必要的工作,在填充之前用默认构造的双精度值初始化向量。不幸的是,QVector 缺乏范围插入,因此您必须求助于算法:

void foo(double* receivedArray, size_t size)
{
    QVector<double> vec;
    vec.reserve(size); // warning: size_t->int cast

    std::copy(receivedArray, receivedArray + size, std::back_inserter(vec));
}

第二个版本甚至无法编译,因为data()返回一个T *,这是一个右值,不能放在赋值的左侧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数组初始化 QVector 的相关文章

随机推荐