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

Golang 有len(array)cap(array)。前者返回数组/切片的长度(即数组元素的数量);据我了解,该功能是 O(1);这使它立即

cap(array)返回底层数组的容量。然而,这个操作是 O(1) 吗?有人会认为数组的容量是数组具有的值,因此可以在 O(1) 时间内看到,但我不能确定


慕森王
浏览 63回答 2
2回答

蓝山帝景

对于切片, 和len都cap只是简单地从切片头中返回相应的值,因此它们是常量时间操作。对于数组,len和cap都是编译时常量。

慕桂英3389331

切片类型的内部定义如: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字段。
打开App,查看更多内容
随时随地看视频慕课网APP