【发布时间】:2014-11-04 07:28:44
【问题描述】:
即使所有operator[]returns 都是引用,但不使用任何代理对象(如here 所示),多次下标如何为std::array 工作?
例子:
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<array<int, 3>, 4> structure;
structure[2][2] = 2;
cout << structure[2][2] << endl;
return 0;
}
这是如何/为什么起作用的?
【问题讨论】:
-
对引用执行操作时,您对它们引用的对象执行操作。
-
您链接到的示例显示了如何使用代理对象,以便当您有一个建模多维数组的单个对象时,您可以多次为对象下标。使用
array<array<T, N>, M>,您实际上有一个数组数组,因此下标外部对象会返回对数组的引用,然后您可以下标。不需要代理,因为这种情况要简单得多! -
当你有一个指针
int*p,你可以计算p+6+2。同样的事情。
标签: c++ c++11 multidimensional-array stl