将std :: vector复制到qvector

时间:2013-08-08 15:10:45

标签: c++ qt

我尝试使用以下

将一个向量的内容复制到QVector
std::copy(source.begin(),source.end(),dest.begin());

但目的地QVector仍为空。

有什么建议吗?

4 个答案:

答案 0 :(得分:18)

看看:

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

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

From docs

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

MyData

答案 3 :(得分:0)

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

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

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

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

以下是如何使用QVector::fromStdVector(摘自here)的示例:

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))。不这样做会给你一个烦人的编译器错误。