c++ - 将 vector 转换为数组 - 是否有 'standard' 方法来执行此操作?

标签 c++ vector

我知道你可以这样做:&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/

相关文章:

c++ - 如何使用 'using' 声明模板基类的模板方法?

c++ - Findcontours() 运行时错误

C++:boost: 按值参数传递

c++ - 尝试打印正确数量的 '*' 代替数值

c++ - 这个返回声明中发生了什么?

c++ - vector 中的所有推回值更改为默认值

java - (Java) vector 问题 - 检查怪物是否在 3 个 vector 内

c++ - fprintf、字符串和 vector

c++ - 可以使用 vector.back() 为 vector 的最后一个元素赋值吗?

c++ - boost::spirit 当词法分析器标记 > 10 时编译错误