对于STL容器(包括vector、list、deque、set、multiset、map、multimap、unordered_set、unordered_map等)的大小处理,有如下几个方面需要关注:
STL容器在内存中是以连续空间分配的方式实现的。当容器需要扩大时,它会在内存中分配一块更大的连续空间,并将元素复制到新容器的内存中。
当容器中的元素数量超过容器的容量时,就需要对容器进行扩容。扩容过程就是将容器中的元素复制到新的更大的容器中,并释放旧容器的内存。
STL中的容器都是基于指针的,因此容器的内存分配策略也是基于指针的。在STL中,容器的内存分配策略有3种:
当容器中的元素被删除或容器被销毁时,就会进行容器的内存释放。内存释放就是将容器中的元素释放掉,并将其占用的内存返回给操作系统。
以上就是STL容器的大小处理机制,它能够保证容器的内存分配和释放都是高效的,并且能够支持大规模容器的内存管理。
领取专属 10元无门槛券
手把手带您无忧上云