Is std::string size() a O(1) operation?(std::string size() 是 O(1) 运算吗?)
问题描述
std::string size() 是 O(1) 运算吗?
Is std::string size() a O(1) operation?
我使用的STL实现是VC++自带的
The implementation of STL I'm using is the one built into VC++
推荐答案
如果您问 MSVC 的 string::size() 实现是否具有恒定复杂性,那么答案是肯定的.但是 Don Wakefield 提到了 C++ 标准 23.1 中的表 65说 size() 的复杂性应该遵循注释 A"中所说的.注释 A 说:
If you're asking if MSVC's implementation of string::size() has constant complexity, then the answer is yes. But Don Wakefield mentioned Table 65 in 23.1 of the C++ Standard where it says that the complexity of size() should follow what's said in 'Note A'. Note A says:
那些标记为(注 A)"的条目应该具有恒定的复杂性.
Those entries marked ‘‘(Note A)’’ should have constant complexity.
然而,这并不意味着这些条目应该具有恒定的复杂性.标准使用非常具体的术语,应该"意味着它不是强制性的.
However, that does not mean that those entries shall have constant complexity. Standards use very specific terminology, and "should" means that it is not mandatory.
'Note A' 被添加到标准中是为了安抚那些认为应该允许 size() 具有线性复杂性的人修改.
'Note A' was added to the standard specifically to appease those who believed that size() should be allowed to have linear complexity so it would not be necessary to keep the size when the containers were modified.
所以你不能依赖 size() 具有恒定的复杂性,但老实说,我不确定是否有任何实现没有恒定的 string::size().
So you can't rely on size() having constant complexity, but I'm honestly not sure if there are any implementations that do not have a constant string::size().
这篇关于std::string size() 是 O(1) 运算吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:std::string size() 是 O(1) 运算吗?
基础教程推荐
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
- CString 到 char* 2021-01-01
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01
- 初始化列表*参数*评估顺序 2021-01-01
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
