c++ resize和reserve區(qū)別何在

c++
小樊
218
2024-06-24 16:45:27

在C++中,resize()和reserve()都是用來調(diào)整容器大小的函數(shù),但是它們的作用和用法略有不同。

  1. resize():
  • resize()用于改變?nèi)萜鞯拇笮。梢栽黾踊驕p少容器中元素的數(shù)量。
  • 如果resize()函數(shù)增加容器的大小,它會(huì)在末尾添加新元素,并將新元素的值初始化為默認(rèn)值。
  • 如果resize()函數(shù)減少容器的大小,它會(huì)刪除末尾的元素。
  • 例如,vector vec; vec.resize(5); 會(huì)將vec的大小調(diào)整為5,并將新元素初始化為0。
  1. reserve():
  • reserve()用于為容器預(yù)留一定的內(nèi)存空間,但不會(huì)改變?nèi)萜髦性氐臄?shù)量。
  • reserve()函數(shù)只會(huì)影響容器的容量,而不會(huì)影響其大小。
  • 通過調(diào)用reserve()函數(shù),可以避免在向容器中添加元素時(shí)多次重新分配內(nèi)存的開銷,提高性能。
  • 例如,vector vec; vec.reserve(10); 會(huì)為vec預(yù)留10個(gè)元素的內(nèi)存空間,但vec的大小仍然為0。

因此,resize()函數(shù)用于改變?nèi)萜鞯拇笮。鴕eserve()函數(shù)用于預(yù)留內(nèi)存空間,但不會(huì)改變?nèi)萜鞯拇笮 ?/p>

0