C++二维数组初始化相关应用技巧分享

在C++编程语言中,对于数组的操作是一个非常基础而又重要的应用技术。我们在这篇文章中会为大家详细介绍C++二维数组初始化的相关操作方法,方便大家对这方面的应用技术有所掌握。C++的二维数组是不能用变量初始化的,像下面的代码肯定是编译不通过的:

 
 
 
  1. int i=5;  
  2. int j=4;  
  3. int a[i][j]; 

像这样的代码肯定是很多C++像我一样的初学者的困感,如果数组是在编译的阶段确定其内存位置的,而变量不能作为数组的维数.下面,用一个模板类,完成这种C++二维数组初始化的功能 

 
 
 
  1. template< class T> 
  2. class Array2D{  
  3. private:  
  4. T* pData;  
  5. int dim1;  
  6. int dim2;  
  7. int dim1Index;  
  8. class Array1D{  
  9. private:  
  10. int length;  
  11. T* start;  
  12. public:  
  13. Array1D(T* start,int length):length(length),start(start){}  
  14. T& operator[](int index){  
  15. if(index>length){  
  16. throw out_of_range("数组第二维数越界");  
  17. }else{  
  18. return *(start+index);  
  19. }  
  20. }  
  21. };  
  22. public:  
  23. Array2D(int dim1,int dim2){  
  24. this->dim1dim1=dim1;  
  25. this->dim2dim2=dim2;  
  26. int size=dim1*dim2;  
  27. pData=new T[size];  
  28. }  
  29. Array1D operator[](int index){  
  30. return Array1D(pData+index*dim1,dim2);  
  31. }  
  32. void print(){  
  33. for(int i=0;i< dim1;i++){  
  34. for(int j=0;j< dim2;j++){  
  35. cout< < *(pData+dim1*i+j)< < " ";  
  36. }  
  37. cout< < endl;  
  38. }  
  39. }  
  40. };  
  41. int main(){  
  42. int index1=2;  
  43. int index2=2;  
  44. Array2D< int> test(index1,index2);  
  45. test[0][0]=1;  
  46. test[0][1]=2;  
  47. test[1][0]=3;  
  48. test[1][1]=4;  
  49. test.print();  

用一个模板类实现这个功能,是C++二维数组初始化中一个不错的选择,但在实际中,是很少有人这样写的,这是在more effective C++给出的方法,目的是为了说明proxy模式,Array1D是作为一个proxy类存在的。

【编辑推荐】

  1. C++模拟event关键字具体实现方案
  2. C++ void使用规则总结概览
  3. C++ void基础概念讲述
  4. C++单向链表实现代码解读
  5. C++函数对象与函数指针不同之处

本文标题:C++二维数组初始化相关应用技巧分享
当前地址:http://www.csdahua.cn/qtweb/news35/413335.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网