很好用的动态二维数组建立方法
大家都知道,有时候后需要动态建立一个数组,一位数组还好说,但是如果是二维数组则稍显麻烦一些。
在VC中,一般位图的数据传输都是通过一个DWORD指针加上长宽共三个数据进行传输的,这样的缺点就是在代码里需要加点控制,而且在调试的时候比较容易溢出导致程序崩溃。但是能用好还是很不错的。
最近在学习图论的遍历,这里就涉及到要先建立一个图。我首先想试验的遍历方法是深度优先遍历,所以觉得用邻接矩阵法好一点。
如果我直接用上面的方法,或许就没那么多波折了。
我用的是vector。
这个在一维的时候相当好用,绝对是我见过的最好用的几种容器之一了。
但是涉及到二维的时候,就出现了一点的麻烦。
因为最外围的vector成员是vector<int>,而vector在操作符重载上貌似就做了一个[],在进行初始化的时候不是很好用了。
但是后来想了想,结合网上的一些经验,我想到这个方法,很方便很快捷,而且很好用。
代码简单如下:
1 vector<vector<int> > vec; 2 vec.resize(6); 3 for(int i = 0;i < 6;++ i) 4 { 5 vec[i].resize(6); 6 }
先创建一个vector<int>的容器,然后再按照需求调用resize函数开辟空间。
然后再调用容器元素的resize函数对其内部进行空间开辟。
简单6行代码,工作完成。
然后就能够像一个普通二维数组那样进行数据操作啦~
很方便,很快捷,而且效率很高。
示例代码:
1 for(int i = 0;i < 6;++ i) 2 for(int j = 0;j < 6;++ j) 3 { 4 vec[i][j] = j; 5 }
真的是相当好用~~~