如何获取指向2D std :: vector内容的指针

时间:2011-07-18 14:28:16

标签: c++ stdvector

鉴于

std::vector<char> theVec

我可以得到如下指针

char* cc = &theVec[0]

如果向量声明如下:

std::vector<std::vector<char> > theVec

如何将指向theVec头部的指针变成char *

char cc* = 

2 个答案:

答案 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];