动态二维数组每一行在物理上是连续的,但是行与行之间在物理上不一定是连续的,要先理解动态二维数组,要先知道vector里面究竟有什么,如下图,vector里面有三个元素,_a存的是数据,_size是元素个数,_capacity是容量,一个二维数组vv,它的类型是vector<int>*,里面的_a指向一个数组,该数组的元素都是vector,这些vector对应行,而这些vector中的_a的类型是int*,指向的是一个个连续的存储空间(数组),这些数组就是每一行内的元素。
由此可以知道vv[i] [j]的逻辑,vv[i]就是vv.operator[](i),返回值类型是vector<int>,此时找到“行”对应的vector,该vector中存储了一维数组的首地址,就可以通过这个vector找到数组了。
[j]就是vv[i].operator[](j),返回值类型为int类型,也就是存储的元素。