0

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

std::vector<Type> vT;
Type* p = (Type*)&vT[0];
4

3 回答 3

12

是的,你甚至不需要投射它。

于 2012-06-01T03:18:43.487 回答
6

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

于 2012-06-01T03:24:00.833 回答
1

在执行此操作之前,请确保该向量不为空。

Type *p = ( vT.empty() ? NULL : &vT[0] );

或者正如 Xeo 所指出的,新的库规范允许.data()成员函数做同样的事情(在您的实现中可能不可用)。

于 2012-06-01T03:43:51.903 回答