【问题标题】:C++11: std::vector::shrink_to_fit complexityC++11:std::vector::shrink_to_fit 复杂度
【发布时间】:2013-05-07 06:42:06
【问题描述】:

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

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

【问题讨论】:

  • (这篇文章很快就修复了,所以现在最初的说法是错误的。)

标签: c++ c++11 stl time-complexity


【解决方案1】:

文章有问题,我修好了。

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

23.3.6.3:

void shrink_to_fit();

要求T 应为 MoveInsertable*this

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

【讨论】:

  • 您可能引用了一个草案 - C++11 标准中没有关于 std::vector::shrink_to_fit() 复杂性的任何内容。
  • @MichaelBurr:是的,他们在 N3376 中更改了它。
  • 我明白了 - 有趣的是他们没有添加 basic_string<>::shrink_to_fit() 的措辞(还没有?)。
  • 也许您应该澄清这是来自您的答案中的特定草稿。
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多