kowala's home
http://kowala21.blogspot.com
這裡使用Dev C++ 來製作動態二維陣列物件,通常在使用陣列時,常常會被指標搞的暈頭轉向,但是使用陣列用來儲存資料,卻又是必須的工具,如何避免被複雜的指標干擾寫作程式,使用物件的觀念卻是必要的,把底層複雜運算封裝起來,上層就可以單純的存取,這對於大型程式開發,是很重要的觀念。
底下程式是先製作一個動態二維陣列物件,然後實作,存取測試,完整程式碼如下:
本篇是使用 C++ 語法
#include <cstdlib>
#include <iostream>
using namespace std;
/*******************************************************************
2D Array Object
2011-10-11kowala's home http://kowala21.blogspot.com
ref: http://www.programmer-club.com.tw/ShowSameTitleN/c/37868.html
********************************************************************/
typedef int* array;
class SrcData{
array *matrix;
int m_rows;
int m_cols;
public:
SrcData();
void initData(int row,int col,int var);
void relaxData();
void dumpData();
void setData(int row,int col,int var);
int getData(int row,int col);
};
int main(int argc, char *argv[]){
system("cls");
int row=3,col=7;
SrcData sd;
cout << "initial array by -1 ..." << endl;
sd.initData(row,col,-1);
sd.dumpData();
cout << "set value to array..." << endl;
sd.setData(0,1,1);
sd.setData(0,2,2);
sd.setData(0,3,3);
sd.setData(1,2,4);
sd.setData(1,3,5);
sd.setData(1,4,6);
sd.setData(2,3,7);
sd.setData(2,4,8);
sd.setData(2,5,9);
sd.dumpData();
cout << "get value from array..." << endl;
cout << "[0,1]=" << sd.getData(0,1) << endl;
cout << "[1,2]=" << sd.getData(1,2) << endl;
cout << "[2,3]=" << sd.getData(2,3) << endl;
sd.relaxData();
system("PAUSE");
return EXIT_SUCCESS;
}
//--------------------------------------------------
//建構子
SrcData::SrcData(){ m_rows=1;m_cols=2;}
//設定參數
void SrcData::setData(int row,int col,int var){ matrix[row][col]=var;}
//取出參數
int SrcData::getData(int row,int col){ return matrix[row][col];}
//初始化陣列
void SrcData::initData(int row,int col,int var){
m_rows=row;m_cols=col;
SrcData::matrix=new array[m_rows];
for(int i=0;i<m_rows;i++){
SrcData::matrix[i]=new int[m_cols];
for(int j=0;j<m_cols;j++){
SrcData::matrix[i][j]=var;
}
}
}
//釋放陣列
void SrcData::relaxData(){
for(int i=0;i<m_rows;i++){
delete [] SrcData::matrix[i];
}
delete [] SrcData::matrix;
}
//傾印資料
void SrcData::dumpData(){
cout << "rows=" << m_rows << ",cols=" << m_cols << endl;
for(int i=0;i<m_rows;i++){
for(int j=0;j<m_cols;j++){
cout << "[" << i << "," << j << "]=" << SrcData::matrix[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
執行結果如下圖
參考資料:
1.如何傳遞動態的二維陣列給函式 doggie (franklin)
http://www.programmer-club.com.tw/ShowSameTitleN/c/37868.html
2.C++教學(二十八):在參數列傳遞陣列 大頭嬰
http://www.hala.bz/read.php?tid=7138
沒有留言:
張貼留言
請提供您的寶貴意見 ;-)