August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
实现了reserve()后,再为vector实现reszie()就很简单了。我们只需处理以下几种情况:
·新的大小大于已分配的空间。
·新的大小大于当前大小,但小于或等于已分配空间。
·新的大小等于当前大小。
·新的大小小于当前大小。
下面的代码展示了resize()的实现:
我们用reserve()处理困难的内存空间管理问题。代码中的循环将初始化新的元素(如果有的话)。
在本例中,我们没有显式地处理每一种情况,但你可以验证:在上述代码中,每一种情况均被正确地处理了。
试一试
如果我们需要证明上述resize()是否正确,那么需要考虑(并测试)哪些情况?当newsize==0时会怎样?当newsize==-77呢?