鉴于
std::vector<char> theVec
我可以得到如下指针
char* cc = &theVec[0]
如果向量声明如下:
std::vector<std::vector<char> > theVec
如何将指向theVec头部的指针变成char *
char cc* =
答案 0 :(得分:4)
如何获得指向theVec [作为char *]的头部的指针?
你做不到。向量的头部类型为std::vector<char>
,而不是char
,而std::vector<std::vector<char> >
不会将其数据存储在一个连续的块中。
相反,你可以这样做:
std::vector<char> theVec;
theVec.resize(xSize*ySize);
char cc* = &theVec[0];
char tmp = theVec[x*xSize + y];//instead of theVec[x][y]
答案 1 :(得分:2)
std::vector<char> * p = &theVec[0];
如果你想要一个指向第一个字符的指针,那么:
char * p = &theVec[0][0];
但是,要小心,因为迭代指针经过第一个子向量不会将其移动到下一个向量中,就像多维数组一样。要获得指向下一个子矢量头部的指针,您可以使用:
p = &theVec[1][0];