一、动态数组问题
要求
题目会输入一个n个元素的数组
这样写报错
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n]; //这里报错,不能这样写
return 0;
}
二、一维动态数组
1.全局变量的数组
就是上面的
#define MAX 12
int a[MAX];
int n;
int main(){
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
return 0;
}
2.new数组
只要指定开辟的内存大小就ok,所以我们用new一个数组的方式实现动态数组
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int* p = new int[n];
//输入元素
for(int i=0;i<n;i++)
{
cin>>p[i];
}
//...
delete[] p;
return 0;
}
3.容器vector
vector支持变长数组
#include <iostream>
#include<vector>
using namespace std;
int main() {
int n;
cin>>n;
//比如4
vector<int> array(n);
//输入元素
for(int i=0;i<n;i++)
{
cin>>array[i];
}
//...
return 0;
}
三、二维动态数组
1.全局变量的数组
就是上面的
#define MAX 12
int a[MAX][MAX];
int n,m;
int main(){
cin>>n>>m;
//输入元素
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
return 0;
}
2.new数组
int n, m;
cin >> n >> m;
int** p;
p = new int* [n]; //表示一个有n个元素的指针数组,这是行
//这是列
for (int i = 0; i < n; i++)
{
p[i] = new int[m];
}
//元素输入
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> p[i][j];
}
}
3.容器vector
vector支持变长数组
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int> > c(n, vector<int>(m));
//输入元素
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> c[i][j];
}
}
return 0;
}