c++ - std::string size() 是 O(1) 操作吗?

标签 c++ visual-c++ stl stdstring

std::string size() 是 O(1) 运算吗?

我使用的 STL 的实现是 VC++ 内置的

最佳答案

如果您要问 MSVC 的 string::size() 实现是否具有恒定的复杂性,那么答案是肯定的。但是Don Wakefield提到了 C++ 标准 23.1 中的表 65,它说 size() 的复杂性应该遵循“注释 A”中所说的内容。注 A 说:

Those entries marked ‘‘(Note A)’’ should have constant complexity.

但是,这并不意味着这些条目应该具有恒定的复杂性。标准使用非常具体的术语,“应该”意味着它不是强制性的。

'Note A' 被添加到标准中,以安抚那些认为应该允许 size() 具有线性复杂度的人,因此在容器被放置时不需要保持大小修改。

所以你不能依赖 size() 具有恒定的复杂性,但老实说,我不确定是否有任何实现没有恒定的 string::size( )

关于c++ - std::string size() 是 O(1) 操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256033/

相关文章:

c++ - 如何输入自定义类的 vector ?

c++ - 在哪里可以找到 STL 集合类中的 _M_key_compare 函数定义?

c++ - 为 std::map 定义一个使用值而不是键的比较函数

c++ - 多重继承模糊函数

c++ - 用于存储数据的结构和外部二进制文件

c++ - 骰子计数器无法正常工作(初学者)

exception - 捕捉导出(1);

C++ strtok 返回错误

Windows 中 UDP 的 C++ 头文件?

c - 函数名中的指针/指针函数