c++ - 从 std vector 声明 Qvector

标签 c++ qt qt5 qvector

我正在尝试从 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/

相关文章:

c++ - 具有前向声明类的 QSharedDataPointer

qt - 设置Qlabel宽度

c++ - Qt 5 与 QOpenGLTexture 和 16 位整数图像

c++ - 如何在 Qt 中的按钮后面画线?

c++ - Qt QMainWindow 关闭

c++ - 指针迭代器的取消引用适配器

C++ : Return string value through function call on a class object

c# - 如何在 Iron python 中加载用 C++ 编写并用 C# 包装的 DLL?

multithreading - 在 Qt 4.7 中流式传输 QImage

c++ - Qt GLSL纹理只出现一种颜色