我正在尝试从 std::Vector 创建一个 Qvector。
我当然可以使用 for 循环逐个元素地复制它,但我正在寻找更好的方法来做到这一点。
所以我尝试了:
QVector<double> qv = QVector<double>::fromStdVector(values) ;
这工作正常,但我收到一条警告,表明它已被弃用。
我遵循了哈迪·纳瓦普尔(Hadi Navapour)的建议 copying a std::vector to a qvector
并尝试了以下操作:
QVector<double> qv = QVector<double>(values.begin(), values.end());
但是这段包含 begin() 和 end() 的代码无法编译,我收到以下错误:
error: no matching function for call to ‘QVector::QVector(std::vector::iterator, std::vector::iterator)’ QVector qv = QVector(values.begin(), values.end());
我相信这应该使用以下构造函数QVector(InputIteratorfirst,InputIteratorlast)
我无法让它工作。
有人可以解释一下将 std::vector 复制到 Qvector 的正确的非弃用方法吗?
提前致谢!
最佳答案
文档 https://doc.qt.io/qt-5/qvector.html#fromStdVector强制使用 5.14 版本中的范围构造函数。
所以也许您可以在实现中使用版本标志。
如果您有兴趣,请尝试如下所述。
#if QT_VERSION <= QT_VERSION_CHECK(5,14,0)
QVector<double> qv = QVector<double>::fromStdVector(values) ;
#else
QVector<double> qv = QVector<double>(values.begin(), values.end());
#endif
关于c++ - 从 std vector 声明 Qvector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65451874/