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

时间:2012-06-01 03:17:48

标签: c++ stl

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

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

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:6)

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

答案 2 :(得分:1)

在此之前确保矢量非空。

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

或者正如Xeo所说,新的库规范允许.data()成员函数执行相同的操作(可能在您的实现中不可用)。