动态二维数组的使用,在这里讨论
一直都没好好的使用过动态二维数组,从前我一直觉得二维数组能做的,一维数组都可以。。
下面给出几种情况,都和动态的二维数组相关的:
一、当使用vector的时候
不确定行列数的时候可以这么干:
[cpp]
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
using namespace std;
#include "vector"
#define COL 4
int *Array(int radix)
{
int *array = new int[4];
for (int i = 0; i < COL; i++)
{
array[i] = (i+1) * radix;
}
return array;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int *> array;
array.push_back( Array(2) );
array.push_back( Array(3) );
for (vector<int *>::iterator it = array.begin(); it != array.end(); *it++)
{
int *test = *it;
for (int i = 0; i < COL; i++)
{
cout << test[i] << " ";
}
cout << endl;
}
return 0;
}
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
using namespace std;
#include "vector"
#define COL 4
int *Array(int radix)
{
int *array = new int[4];
for (int i = 0; i < COL; i++)
{
array[i] = (i+1) * radix;
}
return array;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int *> array;
array.push_back( Array(2) );
array.push_back( Array(3) );
for (vector<int *>::iterator it = array.begin(); it != array.end(); *it++)
{
int *test = *it;
for (int i = 0; i < COL; i++)
{
cout << test[i] << " ";
}
cout << endl;
}
return 0;
}
二、在不使用vector的时候
分三种情况
1:列先确定,行后确定
[cpp]
#include "stdafx.h"
#include "iostream"
using namespace std;
#include "vector"
#define ROW 2
#define COL 3
int _tmain(int argc, _TCHAR* argv[])
{
int (*array)[COL];
array = new int[ROW][COL];
int value = 0;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
array[i][j] = ++value;
}
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cout << array[i][j] << " ";
}
cout << endl;
}
delete[] array;
return 0;
}
#include "stdafx.h"
#include "iostream"
using namespace std;
#include "vector"
#define ROW 2
#define COL 3
int _tmain(int argc, _TCHAR* argv[])
{
int (*array)[COL];
array = new int[ROW][COL];
int value = 0;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
array[i][j] = ++value;
}
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cout << array[i][j] << " ";
}
cout << endl;
}
delete[] array;
return 0;
}
2:行先确定,列后确定,这是一种很常见的情况
[cpp]
#include "stdafx.h"
#include "iostream"
using namespace std;
#include "vector"
#define ROW 2
#define COL 3
int _tmain(int argc, _TCHAR* argv[])
{
int *array[ROW];
int value = 0;
for (int i = 0; i < ROW; i++)
{
array[i] = new int[COL];
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
array[i][j] = ++value;
}
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cout << array[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < ROW; i++)
{
if (array[i])
{
delete[] array[i];
array[i] = NULL;
}
}
补充:软件开发 , C++ ,