猿问

在c++中,是否可以像Numpy中的ndarray风格一样,实现使用[i, j, ...]

在 numpy 中,可以按如下方式访问数组


import numpy as np

a = np.arange(3*2).reshape(3, 2)

b = a[0, 1]

在 C++ 中,是否可以重载运算符 [] 来实现与a[0, 1]? 当然,输入参数的数量可能会有所不同。


犯罪嫌疑人X
浏览 196回答 1
1回答

梦里花落0921

它不是。见数组下标运算符为了提供多维数组访问语义,例如实现 3D 数组访问 a[i][j][k] = x;,operator[] 必须返回对 2D 平面的引用,该平面必须有自己的 operator[]它返回对一维行的引用,该行必须有 operator[] 返回对元素的引用。为了避免这种复杂性,一些库选择重载 operator(),以便 3D 访问表达式具有类似 Fortran 的语法 a(i, j, k) = x;然而,已经提出了最终实现这一点的相关提议。
随时随地看视频慕课网APP

相关分类

Python
我要回答