Объявить, определить и инициализировать одномерные и двумерные массивы (векторный контейнер) в Qt C ++ (два)

файл головы

class Vector_test
{
    
    
public:
    Vector_test();

    vector<int> one;
    vector<vector<double> > two;

    vector<int> one_list{
    
    1,2,3};
//    初始化列表的方式(构造函数定义时)给成员变量赋值,是可以的

//    int psize = 1;
//    vector<double> g_best(psize);
//    定义时用的小括号,编译器会认为你尝试定义一个函数。会报错
//    对类的成员函数而言,除了在类体中声明外,还需要在类体外定义。(大部分是这样)

    vector<double> test_1;

    vector<int> two_array_low;
    vector<vector<int> > two_array;
};

Исходный файл

Vector_test::Vector_test()
{
    
    
    vector<int> m;
    qDebug() << m;

    qDebug() << "one" << one;
    qDebug() << "two" << two;

    qDebug() << "one_list" << one_list;

//    qDebug() << "g_best" << g_best();

    test_1.push_back(3.14);
    qDebug() << "test_1" << test_1;


    int k = 1;
    for (int i = 0; i < 3; i++){
    
    
        for (int j = 0; j < 5; j++){
    
    
            two_array_low.push_back(0);
        }
        two_array.push_back(two_array_low);
//       two_array_low.clear();
    }

    qDebug() << "two_array" << two_array;
}

исход

Переменная типа Int объявляется только (обычно это только указанное объявление, но на самом деле она объявляется и определяется вместе), вы можете распечатать значение, но значение, которое печатается каждый раз, отличается, потому что это произвольно выделенное пространство.
Переменная создается, но не инициализируется. Интеллектуальный компилятор инициализируется по умолчанию - автоматически выделяет адрес памяти (то есть блок памяти) для переменной и распечатывает значение соответствующей памяти, но каждый раз, когда она запускается, выделенный адрес разные, в результате выводятся разные значения

При инициализации по умолчанию двумерного массива (вывод - vector ()) можно распечатать только пустые, нераспределенные контейнеры.
Если вы используете at для доступа к членам в будущем, он должен быть инициализирован, иначе произойдет утечка памяти.

std::vector()
one std::vector()
two std::vector()
one_list std::vector(1, 2, 3)
test_1 std::vector(3.14)
two_array std::vector(std::vector(0, 0, 0, 0, 0), std::vector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), std::vector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

рекомендация

отblog.csdn.net/qq_43641765/article/details/111188309