将矢量地址转换为本机指针是否安全?

Tho*_*son 0 c++ stl

我想在将它传递给某个外部API调用之前将向量地址传递给指针,这样做是否安全?根本问题是向量中的元素是否确保在内存中连续?

std::vector<Type> vT;
Type* p = (Type*)&vT[0];
Run Code Online (Sandbox Code Playgroud)

Jim*_*uck 12

是的,你甚至不需要施放它.

  • 是的,但关键是`&vT [0]`已经是你正在寻找的本机指针类型,而不需要强制转换. (8认同)
  • @Thomson:你不需要施放.即使你这样做,也不应该使用C-cast. (3认同)

Xeo*_*Xeo 6

是的,&v[0]这样做是安全的,是的,元素在内存中是连续的.v.data()不过,我个人会使用,因为这样可以更好地传达这个想法(毕竟你想获得内部数组,数据).

  • 我不同意data()表达了"更好"的意图.尽管如此,它并没有恶化.但是,获取第一个元素的地址的习惯已经变得众所周知. (3认同)