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

it2024-07-15  45

vector容器

Qt与C++的关系变量、函数的声明、定义一维数组的声明和初始化二维数组的声明和初始化注意

Qt与C++的关系

Qt是在C++的基础上将UI界面上的控件封装成类 因此C++上的代码同样适用于Qt 使用vector容器时,加入以下代码就可以了

include <vector> using namespace std;

变量、函数的声明、定义

声明:不需要编译器为其分配内存空间; 定义:要求分配内存空间。

声明是告诉编译器,这个变量或函数已经在程序中存在。

对变量而言,声明和定义一起进行:

int a;//完成声明和定义

对函数而言,声明和定义可以分离: 声明:

void data_func();//可以对一个变量多次声明,不会报错 void data_func(); void data_func();

定义:

void data_func(){};

一维数组的声明和初始化

1、默认初始化 vetor为空,容器中没有元素,没有分配内存空间。(类似函数的声明) 这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。

vector<double> g_best;

2、拷贝初始化

vector<int> list2(list); vector<int> list2 = list;

两种方式等价 ,list2 初始化为 list 的拷贝 list 必须与 list2 类型相同,也就是同为 int 的 vector 类型,list2 将具有和 list 相同的容量和元素。 3、拷贝部分内容初始化

vector<int> list3(list.begin() + 2, list.end() - 1);

读取list容器部分内容 这种初始化方法特别适合于获取一个序列的子序列。

4、默认值初始化

一维数组g_best,长度为psize,默认为0;

g_best为数组名,psize为默认数组长度,默认初始值为0

vector<double> g_best(psize);

5、指定值初始化 一维数组g_best,长度为psize,默认为N; g_best为数组名,psize为默认数组长度,默认初始值为N

vector<double> g_best(psize,N);

6、直接初始化

vector<double> g_best = {1.2,3};

7、静态一维数组

int a[3] = {1.2,3};

6、试验

vector<double> n; qDebug() << "n 为 " << n; vector<double> m(5); qDebug() << "m 为 " << m; vector<double> x(5,3);//所有的值都是3 qDebug() << "x 为 " << x;

输出

n 为 std::vector() m 为 std::vector(0, 0, 0, 0, 0) x 为 std::vector(3, 3, 3, 3, 3)

二维数组的声明和初始化

1、默认值初始化 二维数组swp[][],n行 m列,默认初始值为0

vector<vector<int> >swp(n,vector<int>(m)); //后面两个> >中间的空格不能省略

pop为数组名,sizepop为行,psize为列,默认初始值为0

vector<vector<double> > pop(sizepop, vector<double>(psize)); //定义二维数组pop[][],sizepop行 psize列

2、指定值初始化 pop为数组名,sizepop为行,psize为列,默认初始值为N

vector<vector<double> > pop(sizepop, vector<double>(psize,N)); //初始化为零,程序运行会数组赋值

3、静态初始化

<vector<double> pop = {{1,2,3},{1,2,3}}; //和一维数组类似

4、试验

vector<vector<double> > n; qDebug() << "n 为 " << n; array<vector<double>, 5>x();//此处不加括号会报错,尽量用vector而不是用array qDebug() << "x 为 " << x; vector<vector<double> > m(2,vector<double>(3)); qDebug() << "m 为 " << m; vector<vector<double> > x(2,vector<double>(3,1));//所有的值都是1 qDebug() << "x 为 " << x;

输出

n 为 std::vector() x 为 true m 为 std::vector(std::vector(0, 0, 0), std::vector(0, 0, 0)) x 为 std::vector(std::vector(1, 1, 1), std::vector(1, 1, 1))

注意

vector容器需要以at、pushback进行赋值,不可以用赋值号= // vector<double> x_num;//容器不可以使用=进行赋值 int x_num = 0; x_num = ui->lE_x->text().toDouble(); at()函数作为索引,必须作用于初始化过的数组; 空的数组使用at()会导致数组越界
最新回复(0)