STL中容器的幾個容易混淆的成員函數-size, capacity, resize, reserve


 1. container::size()

用於表示容器中有幾個元素,用n來表示, 並不能表示容器現有的內存最多能存多少個元素。

 

2. container::capacity()

用於表示容器現有的內存最多能夠存放多少個元素, 用m來表示。 如果想要計算容器現有的內存還能夠存放幾個元素 = capacity() - size();

 

3. container::resize(size_t n1)

用於改變n,用於改變容器中現有的元素個數。當調用resize(n1)之後,那麼size()函數返回的就是n1。

如果n1 < n, 那麼容器中後面的n-n1個元素會被析構掉。

如果n1> n, 那麼在容器的後面會插入新n1-n個元素,調用的都是新的元素的默認構造函數(這說明作爲容器元素的默認構造函數的重要性)。

如果n1 > m, 那麼這個時候會調用rellocate函數來爲容器分配n1-m個元素的內存空間,同時調用默認構造函數,這時,也會修改m的值。

 

4. container::reserve(size_t m1)

用於改變m的值,用於改變容器在現有內存下所能存儲的元素的個數。 當調用reserver(m1)之後,那麼capacity()函數放回的就是m1.

如果m1 < m, 那麼容器會忽略掉這個調用,如果想要釋放掉不用的內存,那麼可以使用swap技巧來實現。

如果m1 > m,   那麼容器會調用rellcate函數爲容器增加新的內存空間,但是不會調用默認構造函數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章