如何获取指向 2D std::vector 内容的指针
How to get a pointer to a 2D std::vector's contents
给定
std::vector<char> theVec
我可以得到如下的指针
char* cc = &theVec[0]
如果矢量声明如下:
std::vector<std::vector<char> > theVec
如何将指向Vec头部的指针转换为字符*
char cc* =
如何将指针指向Vec的头部(作为字符*(?
你不能。向量的头的类型是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]
std::vector<char> * p = &theVec[0];
如果你想要一个指向第一个字符的指针,那么:
char * p = &theVec[0][0];
但是,要小心,因为将指针迭代过第一个子向量不会像多维数组那样将其移动到下一个向量。要获得指向下一个子向量头部的指针,可以使用:
p = &theVec[1][0];
相关文章:
- std::vector::迭代器是否可以合法地作为指针
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- 我无法使用C++指针指向类方法返回的 std::vector
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 指向基类的指针的 std::vector 的深层副本
- 从 std::vector 迭代器中执行函数指针
- 将 std::vector::d ata 传递给函数期望类型**(双指针)
- 根据指针条件初始化std::vector
- 释放 std::vector 中指针内存的最有效方法是什么?
- 在实现 std::vector 时,我必须拥有 end() 的"end"指针吗?
- 将双指针作为参数传递给需要引用 std::vector <double>的函数
- 如何将 std::string 赋回作为 <char>void* 指针传递的 std::vector.data()?
- 将此类的智能指针追加到成员 std::vector
- 为什么 std::vector<>::const_reference 可以转换为非常量指针?
- SWIG:传递一个 std::vector< std::vector <double> >指向 python 的指针
- 带有 std::vector 的指针算术
- 从vector<指针*>vector<指针*比;在c++中
- 如何获取指向原始数据的std::vector指针
- c++的vector指针,vector的声明和指针的删除