Golang中cap()函数的时间复杂度(大O表示法)是多少?
Go中
cap()函数的时间复杂度是O(1)吗? 是的,cap()操作的时间复杂度为O(1),具体原因如下:
- 对于切片(slice):Go的切片底层是一个包含三个字段的结构体:指向底层数组的指针、当前已使用的元素长度、底层数组的总容量。
cap()只是直接读取这个结构体里的容量字段,无需任何遍历或计算,因此是常数时间操作。 - 对于数组(array):数组的容量就是其本身的固定长度,这个值在编译阶段就已确定,
cap()直接返回该常量值,同样是O(1)操作。
举个简单的示例:
package main import "fmt" func main() { // 创建长度为3、容量为5的切片 s := make([]int, 3, 5) fmt.Println("len(s):", len(s)) // 输出3 fmt.Println("cap(s):", cap(s)) // 输出5 }
内容的提问来源于stack exchange,提问作者Peter Petigru
相关产品推荐
相关产品推荐

