C++ 如何获取指向2D std::vector';内容

C++ 如何获取指向2D std::vector';内容,c++,stdvector,C++,Stdvector,给定 std::vector<char> theVec 如果向量声明如下: std::vector<std::vector<char> > theVec 但是,要小心,因为迭代该指针经过第一个子向量不会像多维数组那样将其移动到下一个向量中。要获取指向下一个子向量头部的指针,可以使用: p = &theVec[1][0]; 如何获得指向vec头部的指针[作为char*] 你不能。向量头的类型为std::vector,而不是char,并且std::v

给定

std::vector<char> theVec
如果向量声明如下:

std::vector<std::vector<char> > theVec
但是,要小心,因为迭代该指针经过第一个子向量不会像多维数组那样将其移动到下一个向量中。要获取指向下一个子向量头部的指针,可以使用:

p = &theVec[1][0];
如何获得指向vec头部的指针[作为char*]

你不能。向量头的类型为
std::vector
,而不是
char
,并且
std::vector
不会将其数据存储在一个连续块中

相反,您可以这样做:

std::vector<char> theVec;
theVec.resize(xSize*ySize);
char cc* = &theVec[0];
char tmp = theVec[x*xSize + y];//instead of theVec[x][y]
std::vector theVec;
调整向量大小(xSize*ySize);
char cc*=&theVec[0];
char tmp=theVec[x*xSize+y]//而不是vec[x][y]

否我想将向量的内容放入一个字符*您可以显示如何访问2D向量中的元素,但如何填充此向量?我很难想象这只能是一维数组,通常是一维数组,但你忘了它们也是类,而且是连续的。我不确定std::vector在哪里记账,但它可能在数据数组之前,因此您将与2D向量有一些差距。
std::vector<char> * p = &theVec[0];
char * p = &theVec[0][0];
p = &theVec[1][0];
std::vector<char> theVec;
theVec.resize(xSize*ySize);
char cc* = &theVec[0];
char tmp = theVec[x*xSize + y];//instead of theVec[x][y]