为什么最后的预期输出与以下代码中的实际输出不同?
#include<iostream>
#include<fstream>
#include<istream>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for(int ii = 0; ii < 4; ii++){
v.push_back(0);
}
vector<vector<int>> twoDv;
for(int ii = 0; ii < 5; ii++){
twoDv.push_back(v);
}
cout<<"Expected Output : " << &twoDv[0][0] <<'\t'<< (&twoDv[0][0] + 3) <<'\t'<< (&twoDv[0][3] + 1)<<'\n';
cout<<"Actual Output : " << &twoDv[0][0] <<'\t'<< &twoDv[0][3] <<'\t'<< &twoDv[1][0] << '\n';
}
最佳答案
vector< vector< int > >
不是像int[5][5]
这样的二维数组.它是指向数组的指针数组。 (更准确地说,它包含一系列包含指向整数的指针的 std::vector
对象。) 只有“行”是连续的。不同的行彼此不连续,因为它们可能存储在不同的 malloc 内存块中。
关于c++ - vector 元素似乎没有连续存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341264/