网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月25日漏签0天
c++吧 关注:656,524贴子:2,118,501
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 首页 上一页 1 2
  • 294回复贴,共2页
  • ,跳到 页  
<<返回c++吧
>0< 加载中...

回复:【关于……算符重载】其实应该不难……但是……但是……

  • 只看楼主
  • 收藏

  • 回复
  • NEMESIS_T2
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//好吧,败给你了,回来上电脑。
#include <vector>
//sth. else...
template <typename T>
class Matrix
{
public:
//sth. else...
typedef std::vector::size_type index;
T& operator()(index x, index y)
{ return this->data[x][y]; }
//sth. else...
private:
std::vector<std::vector<T> > data;
//sth. else...
};


  • wqzhishou
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Refer to <<Imperfect C++>>,里面有讲述这个问题的章节。
简单来说,如果确定是二维数据的话,可以使用代理类:
template <class T>
class Array_1d {
T& operator[](int index);
};
template <class T>
class Array_2d {
Array_1d<T> operator[](int index);
};


2026-04-25 07:15:50
广告
不感兴趣
开通SVIP免广告
  • whatofor
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
kanqilaihaonandeyangzi.


  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
思路上面已经给了,为了思路清楚把元素类和数组类分开讲,实现时可以直接把元素类放进数组类中:
#include<iostream>
#include<vector>
using namespace std;
template <typename T> class Arr
{
public:
vector<vector<T>> DATA;
vector<T> operator[](const size_t index)
{return DATA[index];}
T operator()(const size_t x,const size_t y)
{ return DATA[x][y];}
};
// 测试类
int main()
{
vector<int> a,b;
a.push_back(1);a.push_back(2);
b.push_back(10);b.push_back(20);
Arr<int> arr;
arr.DATA.push_back(a);
arr.DATA.push_back(b);
cout<<arr[0][0]<<endl; // 测试重载运算符
cout<<arr(1,1)<<endl;
system("pause");
return 0;
}


  • 我变成鱼了
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
return &array[n*cow];


  • 贴吧用户_0EU9RVS
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
妹子的口气


  • patricia_xiao
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好了好了,楼主的问题解决了,再拜叩谢各位相助!
==============封=封=封=封=封=封=封=封=================
哟哟哟,还有个事……
不如告诉你们原题吧!
看:
Write a class of 2D array
Array2,
And the output of the following code should be:
0,1,2,3,
4,5,6,7,
8,9,10,11,
next
0,1,2,3,
4,5,6,7,
8,9,10,11,
#include <iostream>
using namespace std;
int main()
{
Array2 a(3,4);
int i,j;
for( i = 0;i < 3; i ++ )
for( j = 0; j < 4; j ++ )
a[i][j] = i * 4 + j;
for( i = 0;i < 3; i ++ ) {
for( j = 0; j < 4; j ++ ) {
cout << a(i,j) << ",";
}
cout << endl;
}
cout << "next" << endl;
Array2 b;
b = a;
for( i = 0;i < 3; i ++ ) {
for( j = 0; j < 4; j ++ ) {
cout << b[i][j] << ",";
}
cout << endl;
}
return 0;
}


  • LiloyIris
  • &
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
啊哈哈哈 闹事的来了 不许删帖~~~


2026-04-25 07:09:50
广告
不感兴趣
开通SVIP免广告
  • 桀靶冇
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
array指针保存row个int指针,每个int指针保存col个int类型,
第一个[]当做成员函数,接受一个row,返回对应的int指针,
第二个[]当做友元,接受一个指针和一个col返回int类型。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2
  • 294回复贴,共2页
  • ,跳到 页  
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示