C++ 二维数组的访问方式与应用(代码分析)
程序员文章站
2022-03-26 20:02:49
二维数组平时用的少,在简短的回顾之后,做下小结:
// 2dimensional_array.cpp : 定义控制台应用程序的入口点。
//
#include "stdaf...
二维数组平时用的少,在简短的回顾之后,做下小结:
// 2dimensional_array.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <map> // int getsecondval(int index) { std::map<int, int> _tabmap; _tabmap.insert(std::make_pair(11, 0)); _tabmap.insert(std::make_pair(12, 1)); _tabmap.insert(std::make_pair(13, 2)); _tabmap.insert(std::make_pair(14, 3)); int idx = -1; std::map<int, int>::iterator itr = _tabmap.find(index); if (itr != _tabmap.end()) { idx = itr->second; } return idx; } //使用二维数组替换map查找功能 int getsecondval2(int index) { //初始化二维数组 int array[4][2] = { {11, 0}, {12, 1}, {13, 2}, {14, 3} }; int (*parray)[2] = array; int idx = parray[index-11][1];//根据行数获取第二列的值 //int idx = array[index-11][1];//也行 return idx; } int _tmain(int argc, _tchar* argv[]) { int ary[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; //int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};//也可以这样初始化 int (*pary)[4] = ary; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { //printf("%d\t",a[i][j]);//方式一 //printf("%d\t",p[i][j]);//方式二 //printf("%d\t",*(*(p+i)+j));//方式三 printf("%d\t",*(*(ary+i)+j));//方式四 } printf("\n"); } //因为二维数组在内存上是按照逐行顺序排列的,所以也可以看成是一维数组,故可以这样访问: int x[3][2] = {{1,2},{3,4},{5,6}}; int * y = (int *) x; int k = 0; for(k = 0; k < 3 * 2; k++) printf("%d\t", y[k]); //根据key查找val int index = getsecondval(12); printf("\ngetsecondval : %d\n", index); //巧用二维数组替代map index = getsecondval2(12); printf("\ngetsecondval2 : %d\n", index); return 0; }
上一篇: 程序如何实现可扩展性
下一篇: HTML布局原理