算法
120.STL里resize和reserve的区别是什么?
在STL中,resize()和reserve()都是用于管理容器大小的函数,但它们的作用不同。
- resize()
resize()函数用于改变容器的大小,它会在必要时增加或减少容器的元素数量,使其达到指定的大小。如果指定的大小比容器的当前大小大,则在容器的末尾插入新的元素以达到指定大小;如果指定的大小比容器的当前大小小,则从容器的末尾删除元素以达到指定大小。需要注意的是,当使用resize()函数时,容器中的元素会被默认初始化。
- reserve()
reserve()函数用于预留容器的存储空间,它并不改变容器的大小。reserve()函数接受一个参数n,表示预留的存储空间大小。当我们需要向容器中添加大量元素时,可以使用reserve()函数来提前预留足够的存储空间,以避免频繁地扩展容器大小导致的性能问题。
需要注意的是,reserve()函数只是预留存储空间,并不会改变容器的大小。如果我们向容器中添加元素,容器的大小仍然会根据实际添加的元素数量而变化。同时,reserve()函数并不会初始化容器中的元素,所以在使用reserve()函数后,容器中的元素数目可能会比容器的大小小,而且这些元素的值是未定义的。
总之,resize()和reserve()都是用于管理容器大小的函数,但它们的作用不同。

本文详细介绍了C++中的算法,特别是迭代器的实现、作用以及与指针的区别,阐述了迭代器在STL中的核心地位,以及迭代器在删除容器元素时的注意事项。同时,文章还探讨了STL中resize和reserve的区别,以及在管理容器大小时如何选择。此外,还涉及了STL中hashtable的实现、扩容机制及冲突解决方法,以及STL的两级空间配置器的工作原理。
订阅专栏 解锁全文
965

被折叠的 条评论
为什么被折叠?



