C++数组概述
2026-06-08 21:35:38
发布于:广东
所谓数组
所谓数组,就是一群相同类型的数据连续存放在一起,他们在电脑内存占有相同的内存位置,而关于内存,请看这里。而数组,我带你从定义开始,到遍历以及高级操作
所关于数组定义须知
定义一个数组,首先得背下来这个模板:
你要定义的数组类型 叫什么名字[几个数据]初始赋值或不赋值
//一些例子
int a[10]={1,2,3,4,5};
int b[5];
double a[10]={1.1,2.3};
double a[10];
char a[10]={'a','b'};
char a[10];
bool a[10]={1,0,1,1,1};
bool a[10];
而定义一个数组的大小,需要观看这道题的赋值规模,比如1到100,就定义110,10个则是留出空余空间,防止数组临界报错。
如何遍历一个数组
遍历的意思,就是按照某种固定顺序不重不漏的全部找一遍,一般嵌套if语句。下面是一个标准的遍历,
可以观看一下:
int a[110];
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(...){
...;
}
}
而第一个for循环是读取数据的用处。
如何改变一个数组内的值
同样,这里已有一个模板:
int a[5]={1,2,3,4,5};
a[4]=3;
//将a数组的第5个数据修改为3
而这里是一个输出数组内偶数的程序,请看:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[110];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]%2==0){
cout<<a[i];
}
}
}
这里直接在每一个数据输入时就判断并输出完毕,所以相当与从双for循环简化成了for循环。
高级操作
这里是大佬专区,蒟蒻勿看!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
array<int,5> arr3 = {1,2,3,4,5};
上面是定义了一个STL数组
#include <numeric>
int sum = accumulate(arr, arr+len, 0);
// 求和
int mx = *max_element(arr, arr+len);
// 最大值
int mn = *min_element(arr, arr+len);
// 最小值
这三个函数是高级求解方法,蒟蒻看懂了就用,看不懂的问doubao
int rows=3, cols=4;
int **arr = new int*[rows];
for(int i=0; i<rows; i++) arr[i] = new int[cols];
直接二维数组动态分配,极快运算
constexpr int arr[] = {1,2,3};
编译期数组,在编译过程中动态赋值
操作 代码
数组长度 len=sizeof(arr)/sizeof(arr[0])
排序 sort(arr,arr+len)
反转 reverse(arr,arr+len)
求和 accumulate(arr,arr+len,0)
查找 find(arr,arr+len,val)
去重 unique(arr,arr+len)-arr
拷贝 memcpy(b,a,sizeof(a))
这里空空如也



















有帮助,赞一个