7.C++数组
- 数组可以存储一个固定大小的相同类型元素的顺序集合,数组就是用来存储一系列数据,往往是一系列相同类型的变量
7.1声明数组
- 语法:
数据类型 数组名[数组长度]
- 数组长度必须是大于0的整数常量
7.2初始化数组
7.2.1固定大小数组
//创建包含5个整数的数组
int myArray[5];
7.2.2初始化固定大小数组
//根据初始化列表推断数组大小
int myArray[]={1,2,3,4,5};
7.2.3指定大小并初始化数组
//创建并初始化数组,未初始化的元素,默认初始化为0
int myArray[5]={1,2,3};
7.2.4动态数组
//使用指针和动态内存分配来创建数组,大小在运行时确定
int *myArray = new int[10];
7.2.5标准库容器std::array
//std::array是固定大小的数组模板类,
std::array <int,5> myArray;
7.2.6标准库容器std::vector
//创建动态数组(向量)
std::vector<int> myVector;
//调整向量的大小
myVector.resize(5);
7.3访问数组元素
-
获取数组的元素个数:
sizeof(arr) / sizeof(arr[0])
-
整个数组所占内存空间:
sizeof(arr)
-
每个元素所占内存空间:
sizeof(arr[0])
-
通过数组名查看数组首地址:
(int)arr
-
查看数组种第一个元素的地址:
(int) &arr[0]
-
通过数组名称加索引进行访问,元素的索引放在方括号内,跟在数组名称的后边
#include <iostream> using namespace std; #include <iomanip> using std::setw; int main () { int n[ 10 ]; // n 是一个包含 10 个整数的数组 // 初始化数组元素 for ( int i = 0; i < 10; i++ ) { n[ i ] = i + 100; // 设置元素 i 为 i + 100 } cout << "Element" << setw( 13 ) << "Value" << endl; // 输出数组中每个元素的值 for ( int j = 0; j < 10; j++ ) { cout << setw( 7 )<< j << setw( 13 ) << n[ j ] << endl; } return 0; }
7.4C++数组详解
概念 | 描述 |
---|---|
多维数组 | C++ 支持多维数组。多维数组最简单的形式是二维数组。 |
指向数组的指针 | 可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。 |
传递数组给函数 | 可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。 |
从函数返回数组 | C++ 允许从函数返回数组。 |
7.5C++多维数组
- 语法:
数据类型 数组名[长度1][长度2]...[长度N]
7.5.1二维数组
- 语法:
数据类型 数组名[长度X][长度Y]
- 标识数组中的某个元素,比如
array[X][Y]
来确定唯一元素
7.5.2初始化二维数组
-
固定大小数组
int arr[3][3]={};
-
初始化固定大小数组
int arr[3][3] ={ {1,2,3}, {4,5,6}, {7,8,9} };
-
行数初始化数组,元素个数确定列数
int [][3]={ {1,2,3}, {4,5,6} }; //等同于 int [2][3]={ {1,2,3}, {4,5,6} };
-
不指定大小初始化数组
int arr[]={ {1,2,3}, {4,5,6} };
-
动态分配二维数组
int **arr = new int*[3]; for(int i=0;i<3;i++){ arr[i] = new int[3]; } //手动释放内存 for(int i=0;i<3;i++){ delete[] arr[i]; } delete [] arr;
-
使用std::vector初始化数组
std::vector <std::vector<int>> vec; //创建一个3✖3的二维数组 vec.resize(3,std::vector<int>(3,0));
-
使用std::array初始化数组
//创建一个3✖3的二维数组 std::array<std::array<int,3>,3> arr;
-
指针数组初始化
int arr[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; //创建指向二维数组的指针 int (*ptrArr)[3] = arr;
7.5.3访问二维数组元素(3种)
//
// Created by 16690 on 2024/4/19.
//
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 遍历二维数组
for (int i = 0; i < 3; ++i) { // 外循环控制行
for (int j = 0; j < 3; ++j) { // 内循环控制列
std::cout << arr[i][j] << " "; // 访问并打印数组元素
}
std::cout << std::endl; // 每行结束后换行
}
//范围for循环遍历二维数组
for (const auto &row: arr) {
for (const auto &elem: row) {
cout << elem << " ";
}
cout << endl;
}
//使用指针遍历二维数组
int (*ptr)[3]= arr;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
cout<<ptr[i][j]<<" ";
}
cout<<endl;
}