浅析多维数组的下标重载

 更新时间:2020年4月25日 17:44  点击:1895

今天看到有人问,在2维或者多维数组的情况下怎样重载像[][]这样的操作符号。

其实思路也不难啊,只不过是重载2个[]符号而已,并且2个[]的功能各不一样。

第一个[]应该定位行.

最后一个[]应该返回最终数据的引用。

贴一下实现基本功能的代码吧,像越界检测,及其他功能就没写了,只要体现了思路,其他的功能好加。

复制代码 代码如下:

#include <iostream>
#include <string>

using namespace std;

template <class T> class arr;
template <class T> class arrBody
{
    private:
    friend class arr<T>;
    T* data;
    int row,col,current_row;
    arrBody(int r,int c,T d):row(r),col(c)
    {
        data=new T[r*c];
        current_row=-1;
        for(int k=0;k<r*c;k++)              //初始化数据,默认为0
            data[k]=d;
    }
    public:
        T&   operator[](int  j)            //重载第2个[]号
        {
            if(j>=0&&j<col)
                return data[current_row*col+j];
        }
        ~arrBody(){delete[]data;} }; template <class  T>  class arr  
{  
private:
    arrBody<T> tBody;  
public:  
    arrBody<T>  &operator[](int i)         //重载第一个[]号
    {
        if(i>=0&&i<tBody.row)
            tBody.current_row=i;
        return tBody;
    }
    arr(int  i,int  j,T d=0):tBody(i,j,d) {}  
};


void main()
{
    arr<int> a(10,20);
    arr<double> b(5,5);
    cout<<a[5][5]<<endl;
}

[!--infotagslink--]

相关文章

  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • Lua一维数组与多维数组的使用示例

    今天小编就为大家分享一篇关于Lua一维数组与多维数组的使用示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-06-30
  • php多维数组的排序方式

    php多维数组的排序方式与单数组会有一些不同了同时在不同版本中也有不同的函数了,下面小编整理了一自己在使用php中整理的一些关于php多维数组的排序例子,希望这些例子...2016-11-25
  • 下标操作符重载模拟多维数组详解

    虽然不能直接实现一对下标操作符重载,但是我们可以间接模拟。思路是这样的,先通过单下标操作返回一个具有下标操作能力的左值,对左值进行下标操作,两个下标操作表达式联立就实现了双下标操作...2020-04-25
  • PHP多维数组元素操作类的方法

    下面小编就为大家带来一一篇PHP多维数组元素操作类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-11-22
  • 图文详解c/c++中的多级指针与多维数组

    多维数组与多级指针是初学者经常感觉迷糊的一个地方。超过二维的数组和超过二级的指针其实并不多用。但只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。...2020-04-25
  • php获得二维或多维数组长度

    在php教程中,获得二维或多维数组的第一维的长度,这是个常用的程序判断,比如你读取的数组是一个二维数组: <?php $arr=array( 0=>array('title' => '新...2016-11-25
  • PHP多维数组遍历方法(2种实现方法)

    这篇文章主要介绍了PHP多维数组遍历方法,实例分析了2种多维数组的遍历技巧,包括简单的foreach遍历与递归操作遍历实现方法,需要的朋友可以参考下...2015-12-14
  • php 多维数组排序 array_multisort函数用法

    array_multisort函数是php自带对二维数据进行排序的函数,下面我们一起来看看多维数组排序 array_multisort函数用法,希望文章能够帮助到各位。 对2维数组或者多维...2016-11-25
  • PHP递归删除多维数组中的某个值

    这篇文章主要介绍了PHP递归删除多维数组中的某个值,需要的朋友可以参考下...2017-04-26
  • php对多维数组的某个键值排序方法

    确定了很多多维数组排序的函数与例子,但一直对于指定键值进行排序处理不好,今天就网上网罗了一大堆方法,下面整理一下防止以后使用,同时也希望对各位朋友会有所帮助。...2016-11-25
  • php中搜索多维数组的键值程序

    例如搜索“ok”就会匹配ok里面的数组 “你好,good,很好\"打印出来如果搜索“好”没有匹配到第一数组,就会模糊搜索所有含有“好”的的关键词,例如“你好 很好 爱好”...2016-11-25
  • php多维数组排序方法

    本文章详细的介绍了关于多维数组排序的方法,array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列——有点拗口,真的...2016-11-25
  • php 遍历二维数组与多维数组代码

    关于php的数组,我们来讲一下,二维数组与多维的遍历代码,下面举了三个实例来测试数组的遍历php代码函数了。 代码如下 复制代码 function arr_fo...2016-11-25
  • C#多维数组学习使用

    当下, 由于存储结构需要, 用多维数组, 顺便学习了一下, 将学习经过备忘如下...2020-06-25
  • 浅析多维数组的下标重载

    贴一下实现基本功能的代码吧,像越界检测,及其他功能就没写了,只要体现了思路,其他的功能好加...2020-04-25
  • php数组搜索(多维数组搜索)

    在php中要实现数组搜索方法有很多种,我知道最简单的就是in_array与遍历数组后再一个个对比,其它还有更多更好方法,下面我来介绍介绍。 一维数组搜索很简单in_array...2016-11-25
  • php中count 多维数组长度统计实现方法

    php中count 多维数组长度统计实现方法 有需要的朋友可参考一下下。 下面程序运行结果为() 代码如下 复制代码 ?$numb=array( a...2016-11-25
  • PHP递归遍历多维数组实现无限分类的方法

    这篇文章主要介绍了PHP递归遍历多维数组实现无限分类的方法,涉及PHP递归操作遍历数组的相关技巧,在联动菜单及父子栏目设计等方面非常具有实用价值,需要的朋友可以参考下...2016-05-10
  • PHP求异形多维数组的平均值的例子

    PHP求异形多维数组的平均值的方法小编能想到的就是遍历数组了,那么还有其它的办法可以实现吗,下面我们一起来看看。 在php中,求一个多维异形多维数组常见的方法就是...2016-11-25