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) 运算吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
读取输入文件,最快的方法?read input files, fastest way possible?(读取输入文件,最快的方法?)
在 C++ 中读取格式化输入的最简单方法?The easiest way to read formatted input in C++?(在 C++ 中读取格式化输入的最简单方法?)
从 .txt 文件读取到 C++ 中的二维数组Reading from .txt file into two dimensional array in c++(从 .txt 文件读取到 C++ 中的二维数组)
如何在 C++ 中模拟按键按下How to simulate a key press in C++(如何在 C++ 中模拟按键按下)
为什么在 cin.ignore() 之后没有 getline(cin, var) 读取Why doesn#39;t getline(cin, var) after cin.ignore() read the first character of the string?(为什么在 cin.ignore() 之后没有 getline(cin, var) 读取
scanf 格式输入的 cin 类比是什么?What is the cin analougus of scanf formatted input?(scanf 格式输入的 cin 类比是什么?)