分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
C/C++中动态开辟一维、二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下。
C++中有三种方法来动态申请多维数组
(1)C中的malloc/free
(2)C++中的new/delete
(3)STL容器中的vector
下面逐一介绍:
第一种:malloc/free
1.动态开辟一维数组
运行结果:
2.动态开辟二维数组
运行结果:
第二种:new/delete
1.动态开辟一维数组
2.动态开辟二维数组
第三种:STL中的vector
动态开辟二维数组
代码如下:
#include <iostream>
#include <vector>
using namespace std;
void c_malloc(){
int m, n;
cin >> m >> n;
cout << sizeof(int) << endl;
int **p = (int **)malloc(sizeof(int*)*m);
for (int i = 0; i < m; i++){
p[i] = (int *)malloc(sizeof(int)*n);
memset(p[i], 0, n*4);
for (int j = 0; j < n; j++)
cout << p[i][j] << " ";
cout << endl;
}
}
void c_new(){
int m, n;
cin >> m >> n;
cout << sizeof(int) << endl;
int **p = new int*[m];
for (int i = 0; i < m; i++){
p[i] = new int[n];
memset(p[i], -1, n * sizeof(int));
for (int j = 0; j < n; j++)
cout << p[i][j] << " ";
cout << endl;
}
}
void c_vector(){
int m, n;
cin >> m >> n;
vector<vector<int>> p(m, vector<int>(n));
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
p[i][j] = 0;
cout << p[i][j] << " ";
}
cout << endl;
}
for (vector<int> a : p){
for (int b : a){
cout << b << " ";
}
cout << endl;
}
}
int main(){
c_malloc();
c_new();
c_vector();
return 0;
}
#include <vector>
using namespace std;
void c_malloc(){
int m, n;
cin >> m >> n;
cout << sizeof(int) << endl;
int **p = (int **)malloc(sizeof(int*)*m);
for (int i = 0; i < m; i++){
p[i] = (int *)malloc(sizeof(int)*n);
memset(p[i], 0, n*4);
for (int j = 0; j < n; j++)
cout << p[i][j] << " ";
cout << endl;
}
}
void c_new(){
int m, n;
cin >> m >> n;
cout << sizeof(int) << endl;
int **p = new int*[m];
for (int i = 0; i < m; i++){
p[i] = new int[n];
memset(p[i], -1, n * sizeof(int));
for (int j = 0; j < n; j++)
cout << p[i][j] << " ";
cout << endl;
}
}
void c_vector(){
int m, n;
cin >> m >> n;
vector<vector<int>> p(m, vector<int>(n));
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
p[i][j] = 0;
cout << p[i][j] << " ";
}
cout << endl;
}
for (vector<int> a : p){
for (int b : a){
cout << b << " ";
}
cout << endl;
}
}
int main(){
c_malloc();
c_new();
c_vector();
return 0;
}
转载请标明出处: http://blog.csdn.net/u012027907