12

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

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

然而目的地QVector仍然是空的。

有什么建议么 ?

4

4 回答 4

21

看着:

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

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

来自文档

于 2013-08-08T15:15:52.270 回答
5

'fromStdVector' 最近已被明确标记为已弃用。使用以下代码:

std::vector<...> stdVec;

// ...       

QVector<...> qVec = QVector<...>(stdVec.begin(), stdVec.end());
于 2020-02-26T16:37:34.213 回答
4

如果您要使用 aQVector的内容创建一个新的,则std::vector可以使用以下代码作为示例:

   std::vector<T> stdVec;
   QVector<T> qVec = QVector<T>::fromStdVector(stdVec);
于 2013-08-08T15:16:06.923 回答
1

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

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

以及以下将 a 转换std::vector为 a的静态方法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))。不这样做会给你一个恼人的编译器错误。

于 2017-03-09T20:51:46.727 回答