13

cppreference.com上的文章讲述了 的复杂性std::vector::shrink_to_fit是恒定的。据我所知,只有在元素不移动的情况下才有可能,因为如果它们移动了,那么复杂度就是n。它还说所有迭代器,包括过去的结束迭代器,都可能无效。这意味着元素的移动是一种明确定义的可能性。

文章有问题吗?……还是有什么我不知道的魔法?

4

1 回答 1

16

文章有问题,我修好了。

虽然官方标准没有说明 的复杂性std::vector::shrink_to_fit,但在 N3376 中他们更改了措辞,从而修复了 DR 2033:

23.3.6.3:

void shrink_to_fit();

要求TMoveInsertable*this

复杂性:与序列大小成线性关系。

于 2013-05-13T09:18:49.720 回答