2010-08-14 190 views
0

實現一個名爲MyStack的模板類,該類使用STL類向量創建堆棧。 MyStack類將有兩個函數 - push()和pop()。由於MyStack是一個模板類,它必須以可用於創建任何類型數據(內置和自定義類型)的堆棧的方式編寫。當堆棧的元素被彈出時,它應該從矢量中刪除,以便彈出的數據不再使用內存。 在main()中,創建多個不同數據類型的這種堆棧,推送一些示例數據,並在數據從相應堆棧彈出時顯示數據。template class&vector

+4

到目前爲止您嘗試過哪些方法,特別是在某處? StackOverflow不是一項家庭作業完成服務。 – AshleysBrain 2010-08-15 00:02:39

回答

0

不會直接給你答案。但是你想要做的是創建一個擁有TYPE指針的類。當指針前往的數組被填充時,將信息複製到一個新的更大的數組上,然後刪除舊的數組。跟蹤容量和當前的大小。

如果你自己無法編程,那麼你真的需要回頭去了解更多關於該語言的知識。

+0

這將重新實現'std :: vector'。他特別說他正在建立'std :: vector'。 – Potatoswatter 2010-08-15 01:02:05

+0

@Patatoswatter - 錯過了「耶嗤!」 - 所以你的解決方案更好。 – 2010-08-15 01:31:48

2

獲得std::vector收縮的唯一方法是使用較小的向量來獲得swap。因此,釋放每個對象的內存彈出需要複製(幾乎)整個向量爲每個pop,使其成爲O(n)操作。因此,我建議你不要這樣做,或者如果這是作業,要麼清楚地注意爲什麼執行如此糟糕,或者注意vector::pop_back事實上並不釋放任何東西。

順便說一句,在std::stack使用<stack>std::vector處理分配實現O(1)push()pop()

相關問題