【发布时间】:2016-02-03 16:58:27
【问题描述】:
STLsize() 函数在 C++ 中使用哪种算法或思想来查找字符串或向量的大小?
我知道strlen() 的工作取决于在 C 风格的 char 数组中找到 NUL 字符,但我想知道 size() 函数如何工作以查找不为空的字符串的大小正如我们所知,已终止。
STL 容器是否使用某种指针来标记容器的结束?
这是否有助于找到尺寸或其他东西?
【问题讨论】:
-
size()必须是常数时间操作。 -
没有算法。只有一个变量可以跟踪容器中的项目数。
-
算法是“返回存储值”。
-
在什么情况下停止跟踪,因为没有引用或空字符之类的东西?
-
@DanielKamilKozar:据我所知,没有指定算法,
string或vector可能会也可能不会存储其大小。只要可以在恒定时间内计算大小,实现就可以做任何它喜欢的事情。它可能会检索一个存储的长度,或者它可能会检索一个以字节为单位的大小并除以元素大小,或者它可能会做一个指针减法。