所以根据我的理解,reserve不会初始化抽象,只是简单地分配空间以包含它们。但是不应该v [0]总是给你第一个单位化的记忆,不应该给它分配值总是有用吗?
答案 0 :(得分:9)
因为reserve
不会改变矢量的大小。它只将向量移动到内存中的某个位置,在该位置有足够的空间允许向量的大小在必要时增加。
如果您想确定可以致电v[0]=2
,甚至是v[1]=0
,则应使用resize(2)
,而不是reserve(2)
。
答案 1 :(得分:1)
因为它调用未定义的行为。库编写者可以合法地将begin()的地址保留为nullptr,直到您调整大小。或者将其设置为0xBAADFOOD。或者在写入时格式化硬盘。
现在,更有可能发生的是这是未初始化的内存。因此,除了调试中的一堆断言之外,没有任何可怕的事情发生,以及向量处于其状态而无法修复它的事实。