1

简单的问题:

vector<int> vi;
vi.reserve(1984);
vi[84] = 1900;

这合法吗?请注意,我们在这里谈论的不是某个 Widget,它的 dtor 可能会导致混乱,因为它认为位置 84 的元素正在被破坏,而在 pos 84 处只有随机(或者可能是零-d)内存。

4

1 回答 1

2

不,这是不合法的。仅允许0to访问元素size()-1(当vector不为空时)。如果为空,则不允许访问不存在的元素。

因为int这没有多大意义,但对于 UDTT来说,它是能够容纳 a T(这就是提供的)的内存块与仅当它在 to 的有效范围内时才存在的reserve()实际实例之间的差异.T0size()-1

于 2013-10-31T16:29:59.230 回答