發佈這只是incase其他人有這個問題,並試圖解決這個問題,爲什麼它不工作這裏是一個實際的解決方案/解釋。
@Steve Jessop - 你的代碼有缺陷,你也寫在這裏...(我也編輯了他的帖子,一旦它被批准就修復問題,它將被固定在原始文章中)
http://techsoftcomputing.com/faq/3779252.html
我看不出這是一個「解決方案」的問題時,通過做一個無限循環創建一個新的問題,應該有一個deleteIterator ++ while循環中,使得它實際上到達矢量的結尾。
此外,我遇到了這個問題,我的解決方案是在while循環中檢查迭代器是否等於結束,或者如果向量大小是0並且在嘗試遞增迭代器之前斷開。
Ex。
std::vector<RankPlayer*>::iterator Rank_IT = CurrentPlayers.begin();
while (Rank_IT != CurrentPlayers.end())
{
RankPlayer* SelPlayer = (*Rank_IT);
if(strstr(SelPlayer->GamerTag, this->GamerTag) != NULL)
{
delete[] SelPlayer->PlayerData;
delete[] SelPlayer;
Rank_IT = CurrentPlayers.erase(Rank_IT);
}
if(Rank_IT == CurrentPlayers.end() || CurrentPlayers.size() == 0)
{
break;
}
++Rank_IT;
}
假設'm_basesVector'是'City'的成員,不需要擦除它的元素;它的析構函數即將爲你做。 – 2010-09-23 14:15:21
您知道這不會刪除指針指向的對象。你將不得不調用'delete deleteIterator;'來實現它(如果這是你想要的)。但是,在這種情況下,您應該更喜歡'boost :: ptr_vector'。 – 2010-09-23 14:16:27
請參見[there](http://stackoverflow.com/questions/307082/)。 – Wok 2010-09-23 14:40:29