将std::vector复制到qvector

copying a std::vector to a qvector

本文关键字:qvector 复制 vector std      更新时间:2023-10-16

我尝试使用以下将一个矢量的内容复制到QVector

std::copy(source.begin(), source.end(), dest.begin());

然而,目的地CCD_ 2仍然是空的。

有什么建议吗?

查看:

std::vector<T> QVector::toStdVector () const
QVector<T> QVector::fromStdVector ( const std::vector<T> & vector ) [static]

来自文档

"fromStdVector"最近被明确标记为不推荐使用。使用以下代码:

std::vector<...> stdVec;
// ...       
QVector<...> qVec = QVector<...>(stdVec.begin(), stdVec.end());

如果使用std::vector的内容创建新的QVector,可以使用以下代码作为示例:

   std::vector<T> stdVec;
   QVector<T> qVec = QVector<T>::fromStdVector(stdVec);

正如前面提到的其他答案一样,您应该使用以下方法将QVector转换为std::vector

std::vector<T> QVector::toStdVector() const

以及以下将std::vector转换为QVector的静态方法:

QVector<T> QVector::fromStdVector(const std::vector<T> & vector)

以下是如何使用QVector::fromStdVector的示例(取自此处):

std::vector<double> stdvector;
stdvector.push_back(1.2);
stdvector.push_back(0.5);
stdvector.push_back(3.14);
QVector<double> vector = QVector<double>::fromStdVector(stdvector);

不要忘记指定第二个QVector之后的类型(应该是QVector<double>::fromStdVector(stdvector),而不是QVector::fromStdVector(stdvector))。不这样做会给您带来一个恼人的编译器错误。