当前位置:编程学习 > C/C++ >>

动态二维数组的使用,在这里讨论

一直都没好好的使用过动态二维数组,从前我一直觉得二维数组能做的,一维数组都可以。。


下面给出几种情况,都和动态的二维数组相关的:

 

 

一、当使用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++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,