C++基础笔记4
数组概念
含义:存储一组相同数据类型元素的集合
定义方式:类型 数组名[长度]
类型:int char bool double等 (所有元素的类型相同)
数组名:变量命名规范
长度:元素个数(正整数)
申明时确定,无法改变;内存中连续,快速访问
注意:C++标准不允许用变量 GCC编译器可以使用变量
数组的使用:通过数组名[下标(index)/索引]定位 ==注意是从0开始==
1 | int intArray[10];//定义数组,大小为0 |
数组的输入与输出
C++中并不存在用cin或者cout直接输入或输出,可用循环控制挨个处理
1 | for (int i = 0; i < 10; i ++){ |
==C++11特性写法==
范围循环 for (类型 变量名: 数组)
1 | for (int &x: intArray){ |
数组的初始化
常规方法
int intArray[10];
数组中的数不确定
int intArray[10] = {};
数组里的数初始化为0
int intArray[10] = {1, 2, 3};
数组前三个数按顺序初始化,其余的数为0
int intArray[] = {1, 2, 3};
数组按{}内的数字初始化,长度为括号内数字的个数
其他常见方法
algorithm
以长度为10为例int intArray[10]
fill(intArray, intArray + 10, 1);
意思是将10个元素赋值为1
fill(intArray + 3, intArray + 8, 2);
将数组中34567赋值为2
string.h
memset(intArray, 0, 40);
memset(intArray, 0, sizeof(intArray) * 10);
memset(intArray, 0, sizeof(intArray));
memset(intArray + 3, -1, sizeof(int) * 5);
memset中如果值不等于0或者-1,结果会是很奇怪的数字
memset运行速度更快
多维数组
概念:即元素不再单排成一排而是排成多排
定义方法:int grid[4][5];
初始化也可用{}嵌套的方式
1 | int grid[4][5] = { |
访问时也可直接grid[1][2]
也可以用memset(grid, 0, sizeof(grid));
进行初始化
如果你想定义三维或者更多维,用更多的[]即可
多维数组的输入与输出(范围循环)
例如定义二维数组int a[n][m];//n行m列
1 | for (auto& line: a){ |
多维数组的输出 (普通方法)
1 | for(int i = 0;i < n;i ++){ |
补充
memcpy
添加头文件string.h
memcpy复制矩阵memcpy(b, a, sizeof(a));
把a的值复制到b上去
内存的复制理解: 把a的内存地址,以b为起点,长度为a所占大小,复制到以b为起点的位置
swap
头文件<algorithm>
中swap直接交换例如swap(arr[i],arr[j]);
reverse
头文件<algorithm>
中reverse进行旋转reverse(arr,arr + n);