时间:2021-05-19
今天看到有人问,在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;
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
其实我们可以利用array_filter函数轻松去掉多维空值,而数组的下标没有改变,下面是举例用法:上面代码输出结果为:Array([0]=>滔哥[2]=>1[
很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为
本文实例讲述了PHP实现多维数组转字符串和多维数组转一维数组的方法。分享给大家供大家参考。具体实现方法如下:/***@method多维数组转字符串*@param
使用array_multisort()函数对多个数组或多维数组进行排序的函数,正在研究数组排序、多维数组排序的朋友可以看看。函数 boolarray_multi
取数组下标命令英文命令:UBound 所属类别:数组操作返回指定数组维可用的最大下标(最小下标固定为1)。如果给定变量不为数组变量或指定维不存在,返回0。语法: