【问题标题】:Initialize and access <QVector< QVector<int> > QT5初始化并访问 <QVector< QVector<int> > QT5
【发布时间】:2015-11-08 12:14:39
【问题描述】:

我已经声明了:

//myclass.h
QVector<int> aux;
QVector< QVector<int> > tests;

//myclass.cpp
aux = (QVector<int>(2));

它工作正常,但现在我想将每个 test QVector 维度初始化为 2 个长度:20 和 5。类似于:

tests = (QVector< QVector<int> >(20)(5));

但这不行。如何初始化它?

第二个问题是如何使用 [ ] 访问 tests 位置是不是和这个类似?:

tests[1][4]

谢谢。

【问题讨论】:

    标签: c++ arrays qt5 qvector


    【解决方案1】:

    你可以用一个大小和一个要复制的对象来初始化它:

    //Your .h
    QVector<int>          aux;
    QVector<QVector<int>> tests;
    
    //your .cpp
    aux   = QVector<int>(2);
    tests = QVector<QVector<int>>(20, aux);
    

    请注意,在测试初始化​​中使用 aux 向量将不会引用(因此将来不会通过访问测试对其进行修改)或修改它。 这样测试内部将有 20 个大小为 2 的 QVector。

    关于第二个问题,它应该与 tests[x][y] 一起使用,但如果不是,你可以使用 .at() 方法

    tests.at(x).at(y);
    

    【讨论】:

    • 嗯,辅助和测试是自变量。我不想依赖第二个。我已经在我的 .h 文件中声明了QVector&lt; QVector&lt;int&gt; &gt; tests;,但我不能把初始化放在那里。我的 .cpp 文件中需要它。
    • @walolinux 只需使用另一个向量来初始化测试向量或使用辅助向量的副本
    • 好的,但是如何在我的 .h 中声明它并在我的 .cpp 中设置大小?
    • 我正在编辑答案
    猜你喜欢
    • 2014-01-22
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多