我希望在将其传递给某个外部API调用之前将向量地址传递给指针,这样做是否安全?根本问题是向量中的元素是否确保在内存中连续?
std::vector<Type> vT;
Type* p = (Type*)&vT[0];
答案 0 :(得分:12)
是的,你甚至不需要施放它。
答案 1 :(得分:6)
是的,&v[0]
是安全的,是的,元素在内存中是连续的。我个人会使用v.data()
,因为这样可以更好地传达这个想法(毕竟你想得到内部数组,数据)。
答案 2 :(得分:1)
在此之前确保矢量非空。
Type *p = ( vT.empty() ? NULL : &vT[0] );
或者正如Xeo所说,新的库规范允许.data()
成员函数执行相同的操作(可能在您的实现中不可用)。