C String length() 或 size() 哪个更快?

新手上路,请多包涵

length() 返回字符串中的字符数, size() 返回一个 size_t 这也是相同的,但用于使其与其他 STL 容器保持一致。

为了计算 length() ,字符串遍历所有字符并计算长度。所以, O(n) 时间。

size() 也一样吗?

或者变量的大小可以直接在 O(1) time 中计算吗?

所以,我的问题是,它们在速度方面是相同的(就像它们的计算方式一样)还是在 O(1) time 中计算的大小?

原文由 ronilp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

两者都具有相同的复杂性:恒定。

来自 N4431 工作草案,§21.4.4

size_type size() const noexcept;

返回: 字符串中当前类似字符的对象的数量。复杂性:恒定时间。

size_type length() const noexcept;

返回:大小()。


[…] 遍历所有字符并计算长度 […]

那是您正在考虑的C字符串。

原文由 Daniel Jour 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题