c++ - 在 C++ 中重载“[][]”运算符
问题描述
我有一个包含大型二维数组的结构,其尺寸在编译时是固定的并且已知,类似于:
struct MyStruct{
MyTypeName array[1000][10];
.
.
.
[other stuff]
};
我希望能够访问这个结构的元素,
MyStruct a;
// some code that sets the array values
MyTypeName b = a[55][9];
但我不确定如何重载“ [][]
”运算符。在 1D 情况下,以下将起作用:
struct My1Dstruct{
MyTypeName array[1000];
inline MyTypeName& operator[](int index){
return array[index];
}
inline const MyTypeName& operator[](int index) const{
return array[index];
}
.
.
.
[other stuff]
}
但我无法弄清楚如何以简单的方式在二维上工作。
我阅读了这个先前的问题,但它需要比我更大的灵活性,因此对于我的目的来说答案似乎相当复杂。对于具有明确已知大小的 2D 数组的特定情况,是否有任何方法可以重载[][]
,而无需比直接访问数组更多的成本?(即理想情况下,我正在寻找一种b = a[55][9]
开销为零的解决方案b = a.array[55][9]
。)
解决方案
推荐阅读
- angular - $event.target.value 对点击事件不起作用
- android - Android Gradle:混合版本会导致运行时崩溃
- javascript - 获取点击 javascript 的动态创建的元素
- mysql - 如何在值组之间添加换行符/标题?
- laravel - Laravel Voyager 路线限制
- node.js - 在 ejs 渲染中使用 HTTP.request
- c# - 获取上下文连接并将其用作其他地方的连接
- javascript - 带 Eclipse 的量角器:运行配置弹出窗口中缺少量角器选项
- vue.js - 在路由器中访问 Vue 存储值
- python - Pyspark:将 pyspark.sql.row 转换为 Dataframe