完善对vector的理解

This commit is contained in:
1AoB 2024-05-10 22:21:30 +08:00
parent 83db736a7d
commit 20e3dd2b5b

View File

@ -178,6 +178,10 @@ Child::fun()
vector:底层是一个动态数组,可以通过下标进行快速随机访问,占据连续的内存,在不扩容的情况下,在尾部增删很快.在扩容的情况下,需要先开辟原来容器大小的1.5倍,再将原数据拷贝到新的内存,最后在释放原内存 vector:底层是一个动态数组,可以通过下标进行快速随机访问,占据连续的内存,在不扩容的情况下,在尾部增删很快.在扩容的情况下,需要先开辟原来容器大小的1.5倍,再将原数据拷贝到新的内存,最后在释放原内存
==他的缺点是在数组的中间进行增加或者删除时的复杂度为O(n)==,但是==删除慢这个缺点可以用一些简单的算法进行优化==,比如说可变数组它最后一个位置删除很快,我们可以用swap将这个位置的数与尾部的数进行交换,再删除尾部这个数.
list:是一个双向链表,他访问一个元素的复杂度是o(n),他的内存是不连续的,节点之间通过指针连接.他唯一的优势是可以快速的在任意位置进行增删,但前提是先经过o(n)的复杂度找到这个位置 list:是一个双向链表,他访问一个元素的复杂度是o(n),他的内存是不连续的,节点之间通过指针连接.他唯一的优势是可以快速的在任意位置进行增删,但前提是先经过o(n)的复杂度找到这个位置
Map:是一个键值对,类似于json那种结构,底层是红黑树实现. Map:是一个键值对,类似于json那种结构,底层是红黑树实现.