【问题标题】:QVector of arrays in C++C++中数组的QVector
【发布时间】:2016-03-29 03:46:27
【问题描述】:

我试图在QVector 中保存多项式系数。我的多项式是 2 次的,所以它有三个数字。

当我定义 QVector<double[3]> zeros_Real(n + 1) 时,我得到一个错误(如下)。首先,我认为我可以使用QVector<QVector<double>>,但这会是速度和内存问题,所以我决定不这样做。

为什么我不能有 QVectordouble[3] 元素?

错误:

mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make: *** [debug] Error 2
21:27:01: The process "C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project untitled11 (kit: Desktop Qt 5.5.1 MinGW 32bit)
When executing step "Make"

【问题讨论】:

    标签: c++ arrays qt qvector


    【解决方案1】:

    QVector(如std::vector)要求其元素是可复制的(它必须在重新分配期间复制元素)。数组不能被复制,这意味着你不能拥有QVector<double[3]>

    可行的替代方法是使用std::array(C++11 或更高版本):

    QVector<std::array<double, 3>>
    

    哪些可以被复制。 Qt没有自己的QArray,所以你必须像这样混合标准库和Qt容器。

    【讨论】:

    • 你的答案很棒,但我不能调用 array 或 std::array ,我已经使用命名空间 std 定义并包含数组库。
    • 错误是什么?你是编译成 C++11 还是更高版本?
    • 没有任何错误,只是我无法调用,我的意思是不是来自 CTRL+Space 。我正在使用 Qt Creater 3.5.1 和 Qt 5.5.1 版本,我不知道哪个 C++ 版本的编译器是?
    • 我不知道那个快捷方式在 Qt Creator 中的作用,如果你的程序没有在 IDE 中启动,最常见的原因是它没有编译。你应该能看到一些东西。
    • 我就是这么想的。见this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多