作者BBSealion (海獅)
看板EE_DSnP
標題[問題] ARRAY 的 RESET
時間Mon Dec 6 16:18:40 2010
在做array的時候有些疑問
1.
我們做的list是仿造STL裡面的樣式然後稍作修改(insert方式不同和自動排序)
所以很好懂他應該要有甚麼樣的功能
但array呢?,也是仿造某個原有的功能嗎?
他似乎不像vector(vector沒有pop_front)
也不像一般的string a[5],造出來的array
2.
所以看解說是說我的array在pop_front物件的時候
其餘物件要全部往前面移動
(也就是a[1]會變成原先pop前的a[2]?)
但如果是erase其中一個物件
要把那個位置空下來嗎? (一般array會空下來吧?)
還是也要把後面的往前順移呢?
那如果是erase第一個物件呢?
3.
在constructor解說中說到
For data deletions, the _capacity will remain unchanged
clear中也提到
DO NOT release its memory
也就是說即使我下了reset的指令
array的capacity也不會有所變動嗎?
這樣不會有點奇怪麼,好像有東西沒有reset到
------
感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.41.97
※ 編輯: BBSealion 來自: 140.112.41.97 (12/06 16:25)
1F:推 timrau:3.很正常,所以平常使用vector又想要真的拿回預留的記憶體 12/06 20:48
2F:→ timrau:時就需要一些技巧.....like vector<int>(a).swap(a); 12/06 20:49
3F:→ timrau:甚至vector<int>().swap(vectorA); 12/06 20:49
4F:推 timrau:不然就得等整個object被拆掉的時候才能拿回記憶體了 12/06 20:51
5F:推 wintercobra:2.應該是全部向前順移,並不會空下來,所以看起來的 12/07 22:43
6F:→ wintercobra:array size就會少一,erase第一個的話後面全部也順移 12/07 22:43
7F:→ wintercobra:(囧,沒看到下一篇...) 12/07 22:43