我知道你可以这样做:&theVector[0]
,但这是标准的吗?这种行为总是有保证吗?
如果没有,是否有更好、更“hackish”的方法来做到这一点?
最佳答案
是的,这种行为是有保证的。虽然我不能引用它,但标准保证 vector 元素连续存储在内存中以允许这样做。
不过有一个异常(exception):
它不适用于 vector<bool>
因为模板专门化。
http://en.wikipedia.org/wiki/Sequence_container_%28C%2B%2B%29#Specialization_for_bool
这个特化试图通过打包来节省内存 bools
一起在位域中。然而,它打破了一些语义,因此,&theVector[0]
在 vector<bool>
上将不起作用。
无论如何,vector<bool>
广泛considered to be a mistake所以替代方法是使用 std::deque<bool>
相反。
关于c++ - 将 vector 转换为数组 - 是否有 'standard' 方法来执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682533/