vector erase iterator 内存异常
动态分配内存后,塞入vector容器中,现在想删除该容器中部分,但是erase 迭代器时出现了内存异常
typedef struct
{
int index; //匹配的词串索引
float Score; //差异度得分,值越小表示与模式串越匹配
int bestpos; //匹配的位置
int beststartpos; //匹配的起始位置
}SongScore;
struct RsltCand
{
string result;
vector<SongScore*> vctCand;
};
//增加
vector<RsltCand> vctResult;
for()
{
vector<SongScore*> vctCand;
for()
{
SongScore *songscore = new SongScore;
//do something
vctCand.push_back(songscore);
}
vctResult.push_back(vctCand);
}
//删除
for (vector<RsltCand >::iterator it = vctResult.begin();it!= vctResult.end();)
{
// do something here
// now erase iterator
else
{
for (vector<SongScore*>::iterator ip = it->vctCand.begin(); ip!= it->vctCand.end();++ip )
{
delete *ip; //删除动态分配的内存,正常,内存无变化
}
it = vctResult.erase(it); //内容删除正常,但内存异常增加200K
}
}