我想在将向量地址传递给某些外部 API 调用之前将其传递给指针,这样做安全吗?潜在的问题是向量中的元素是否确保在内存中是连续的?
std::vector<Type> vT;
Type* p = (Type*)&vT[0];
是的,你甚至不需要投射它。
是的,&v[0]
这样做是安全的,是的,这些元素在内存中是连续的。不过,我个人会使用v.data()
,因为这样可以更好地传达这个想法(毕竟你想获得内部数组, data )。
在执行此操作之前,请确保该向量不为空。
Type *p = ( vT.empty() ? NULL : &vT[0] );
或者正如 Xeo 所指出的,新的库规范允许.data()
成员函数做同样的事情(在您的实现中可能不可用)。