将一个std::vector复制到一个QVector

14

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

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

不过目标 QVector 仍然是空的。

有什么建议吗?


1
使用 QVector::fromStdVector - Praetorian
4个回答

23

看这里:

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

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

来自文档


尝试过了,但 MyQvector.fromStdVector(MyStedVector); 仍然导致 qvector 为空。 - Rajeshwar
2
@Rajeshwar:因为它是静态方法,尝试使用:MyQvector = QVector::fromStdVector(MyStedVector); - user1837009

9

'fromStdVector'最近已经被明确标记为deprecated(已废弃)。 请使用以下代码:

std::vector<...> stdVec;

// ...       

QVector<...> qVec = QVector<...>(stdVec.begin(), stdVec.end());

3
我真的不明白QT团队为什么弃用了这个函数。在我看来,它非常有用且更容易编写... - Kafka

5

如果你想用 std::vector 的内容创建一个新的 QVector,你可以参考以下代码:

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

2
正如其他答案所提到的,您应该使用以下方法将 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))。如果不这样做,会产生烦人的编译器错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接