[問題] 從STL的set中移除element
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
問題(Question):
我對C++和STL不太熟,但我在試著用STL裡面的"set"時遇上一個delete的問題
在程式中,StateSet是一個 STL set,我會一直往裡面塞東西,
然後試圖把StateSet裡面「最後一個element」移除掉
我用一個iterator s_it指到set裡面最後一個element
再用StateSet.erase(s_it),
但我查了一下好像這個做法不會真的把s_it指到的memory free掉,
所以我試著用delete s_it來做,但一直沒法成功(compile error)
請問我的寫法是不是出錯了呢?
因為如果我不試著free掉s_it所指向的memory的話,記憶體一直爆炸
(因為我一直塞東西進StateSet並一直移掉最後一個element)
以下是我的程式片段
set <STATE, classcomp> StateSet;
set <STATE, classcomp>::iterator s_it;
...
//中間就一直塞東西進StateSet
...
s_it=StateSet.end();
--s_it; //指到StateSet中最後一個element的iterator
StateSet.erase(s_it); //把 s_it指到的element(set 中最後一個
//element)移除掉
delete s_it; //問題所在:free memory ->這邊會
// compile error,但不free掉memory 的話記憶體又爆炸
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 98.235.93.31
→
10/29 13:59, , 1F
10/29 13:59, 1F
→
10/29 14:15, , 2F
10/29 14:15, 2F
→
10/29 14:16, , 3F
10/29 14:16, 3F
→
10/29 14:16, , 4F
10/29 14:16, 4F
→
10/29 17:25, , 5F
10/29 17:25, 5F
推
11/02 01:31, , 6F
11/02 01:31, 6F