定义
相同类型数据元素的集合
特点1:数组中每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
特点3:一旦创建,不能改变大小
特点4:数组中的元素在内存中是连续依次排列的
一维数组
一维数组定义方式
- 数据类型 数组名[数组长度]
- 数据类型 数组名[数组长度] = {值1, 值2 …}
如果在初始化的时候,没有全部填写完,会用0来填补剩余数据 - 数据类型 数组名[ ] = {值1, 值2 …}
定义数组的时候,必须有初始长度,即大括号内的元素个数是明确的
注意,数组以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。
合法访问的下标范围:左闭右开
一维数组访问方式
数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。
举例:
a = array[2]
数组名用途
- 统计整个数组占用内存大小
int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;
/*sizeof给出整个数组所占据的内容的大小,单位是字节*/
cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;
/*sizeof(a)/sizeof(a[0])即为数组的单元个数*/
cout << "数组中元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
/*sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数*/
输出结果:
40
4
10
- 可以通过数组名查看数组首地址
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl;
输出结果:
17431292
17431292
多维数组
C++支持多维数组。多维数组声明的一般形式如下:
数据类型名 数组名[size1][size2]...[sizeN];
举例:下面的声明创建了一个三维整型数组:
int tridim[5][10][4];
二维数组
一个二维数组,在本质上,是一个一维数组的列表。声明一个x行y列的二维整型数组,形式如下:
数据类型 数组名[x][y];
举例:定义一个整型的包含3行和4列的二维数组:
int a[3][4]
一个二维数组可以被认为是一个带有x行和y列的表格。对于int a[3][4] 这个3行(Row)和4列(Column)的二维数组,示意如下:
二维数组定义方式
- 数据类型 数组名[ 行数 ][ 列数 ]
- 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1, 数据2} ,{数据3,数据4}}
- 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2,数据3,数据4}
- 数据类型 数组名[ ][ 列数 ] = { 数据1, 数据2,数据3,数据4}
C++数组的动态建立及输入
这涉及到vector容器的使用,故简要介绍之。vector容器:能够存放任意类型的动态数组,常用基本操作:
-
头文件#include
-
创建一维vector对象,vector vec;二维vector<vector> vec2;
-
尾部插入数字:vec.push_back(a);
-
尾部元素弹出:vec.pop_back();相当于删除尾部元素。
-
使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的,和数组的访问形式一样。
-
插入元素:vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a。
-
删除元素:vec.erase(vec.begin()+2);删除第3个元素。
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始。
-
向量大小:vec.size()。
-
清空:vec.clear()。
-
初始化赋值:
vector c1(c2) // 复制一个vector(c2也是一个vector)
vector c(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生
vector c(n, elem) // 创建一个含有n个elem元素的vector
vector c(beg,end) // int array[]={1,2,3},beg=array,end=array+3,用数组为vector赋值
- 判断是否为空:vec.empty()。
一维数组的动态建立及输入,并输出验证
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> vector1;
int inputnum=0;
cout << "数组元素个数:";
cin >>inputnum;
int temp = 0;
cout << "数组元素值:";
for (int i = 0; i < inputnum; i++)//输入一维数组
{
cin >> temp;
vector1.push_back(temp);
};
//输出验证
for (int i = 0; i < inputnum; i++)//打印输入的数组
{
cout << vector1[i] << " ";
}
return 0;
}
二维数组的动态建立及输入,并输出验证
#include <iostream>
#include <vector>
using namespace std;
int main(){
int r = 0, c = 0;
cout << "row:";
cin >> r; //输入二维数组的行数
cout << "col:";
cin >> c;//输入二维数组的列数
vector<vector<int> >array;//定义二维数组
vector<int>v;//定义一维数组
array.clear();//将二维数组清空,即初始化
int temp = 0;
cout << "数组元素值:";
for (int i = 0; i < r; i++)//输入r*c的二维数组
{
v.clear();//子数组返回时要清除
for (int j = 0; j < c; j++)
{
cin >> temp;
v.push_back(temp);
}
array.push_back(v);
}
//输出验证
for (int i = 0; i < r; i++)//打印输入的二维数组
{
for (int j = 0; j < c; j++)
{
cout << array[i][j] << " ";
}
printf("\n");
}
return 0;
}