0
我知道向量保证与数组具有相同的底层内存布局。因此对于int
等POD(普通旧数据)类型,当a
非空时,vector<int> a
可用作SomeCFun(&a[0], a.size())
。我想知道,当元素类型是(复杂)类类型时,该技巧是否仍然安全工作?关于使用std :: vector <class type Foo>作为原始数组Foo []
我知道向量保证与数组具有相同的底层内存布局。因此对于int
等POD(普通旧数据)类型,当a
非空时,vector<int> a
可用作SomeCFun(&a[0], a.size())
。我想知道,当元素类型是(复杂)类类型时,该技巧是否仍然安全工作?关于使用std :: vector <class type Foo>作为原始数组Foo []
是的,它会工作。另一种方法是SomeCFun(a.data(), a.size())
- 但无论你喜欢什么。
是的,它保证是任何类型T
。
该类型对数组的布局或C样式数组(或向量)的行为没有影响。 – Xeo 2012-07-20 02:18:03
请注意标题有点偏离。您不能将'vector'的内容作为'T'的数组使用。你可以做的是获得一个指向'T'的指针。 –
2012-07-20 04:19:09