欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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;  
}