Qt C++中声明、定义和初始化一维、二维数组(vector容器)(二)

头文件

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;
}

outcome

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