article at cppreference.com表示std::vector::shrink_to_fit
的复杂性是不变的。据我所知,只有元素不被移动才有可能,因为如果它们是复杂的那么 n 。它还说所有迭代器,包括过去的迭代器,都可能失效。这意味着元素的移动是一个明确定义的可能性。
这篇文章有问题吗? ......还是有任何我不知道的魔法?
答案 0 :(得分:16)
文章是有问题,我修好了。
虽然官方标准没有说明std::vector::shrink_to_fit
的复杂性,但在N3376中他们改变了措辞,从而修复了DR 2033:
23.3.6.3:
void shrink_to_fit();
需要:
T
MoveInsertable
为*this
。复杂性:序列大小的线性。