为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 中的 cap() 函数用大 O 表示法表示有多快?

Golang 中的 cap() 函数用大 O 表示法表示有多快?

Go
慕森王 2023-02-14 16:41:06
Golang 有len(array)和cap(array)。前者返回数组/切片的长度(即数组元素的数量);据我了解,该功能是 O(1);这使它立即cap(array)返回底层数组的容量。然而,这个操作是 O(1) 吗?有人会认为数组的容量是数组具有的值,因此可以在 O(1) 时间内看到,但我不能确定
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

对于切片, 和lencap只是简单地从切片头中返回相应的值,因此它们是常量时间操作。

对于数组,lencap都是编译时常量。


查看完整回答
反对 回复 2023-02-14
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

切片类型的内部定义如:


type _slice struct {

    // referencing underlying elements

    elements unsafe.Pointer

    // number of elements and capacity

    len, cap int

}

对于slice,就是O(1)getlen或者capfield。


len()和cap()ofarray在程序编译时计算。


对于array,它也是O(1)获取len或cap字段。


查看完整回答
反对 回复 2023-02-14
  • 2 回答
  • 0 关注
  • 52 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信