std::string size() 是 O(1) 操作吗?
我使用的STL实现是VC++中内置的
如果您问 MSVC 的 string::size() 实现是否具有恒定的复杂性,那么答案是肯定的。但唐·韦克菲尔德 https://stackoverflow.com/questions/256033/is-stdstring-size-a-o1-operation#256081提到了 C++ 标准 23.1 中的表 65,其中表示size()
应遵循“注释 A”中的说明。注A说:
那些标记为“(注 A)”的条目
应该具有恒定的复杂性。
然而,这并不意味着这些条目shall具有恒定的复杂性。标准使用非常具体的术语,“应该”意味着它不是强制性的。
标准中添加“注释 A”是为了安抚那些相信这一点的人size()
应允许具有线性复杂度,因此在修改容器时无需保留大小。
所以你不能依赖size()
具有恒定的复杂性,但老实说我不确定是否有任何实现没有恒定的string::size()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)