【发布时间】:2013-10-31 16:27:22
【问题描述】:
简单的问题:
vector<int> vi;
vi.reserve(1984);
vi[84] = 1900;
这合法吗? 请注意,我们在这里谈论的不是某个 Widget,它的 dtor 可能会造成混乱,因为它认为位置 84 的元素正在被破坏,而在 pos 84 只有随机(或者可能是零-d)内存。
【问题讨论】:
-
在这种情况下,您可能应该使用
vi.resize(),而不是vi.reserve() -
直觉上这是未定义的行为,但我很难准确地追踪标准中的具体说明。