я объявил массив множествC++, значение извлекается из набора не появляется в наборе, стирая его из набора
std::set<md_core::Sample *> _SessionSet[MAX_SESSIONS];
Теперь я написал две функции
void insertIntoTrdSessionSet(unsigned char index, md_core::Sample *sample)
{
_SessionSet[index].insert(sample);
}
bool removeFromTrdSessionSet(md_core::Sample *sample, unsigned char i = MAX_SESSIONS)
{
if(i != MAX_SESSIONS)
{
if(_SessionSet[i].erase(sample))
return true;
}
else
{
for(i = 0; i < MAX_SESSIONS ; i++)
{
if(_SessionSet[i].erase(sample))
{
return true;
}
}
}
return false;
}
Теперь я извлечь значение из установить один за другим и попытаться удалить, но он показывает, что значение отсутствует в структуре
for(i = 0; i < MAX_SESSIONS ; i++)
{
if(i != pMsg->_Session)
{
std::set<Sample *>::iterator it = pSub->_SessionSet[i].begin();
for(;it != pSub->_SessionSet[i].end(); it++)
{
sample = *it;
//now call delete for the sample
if(!pSub->removeFromTrdSessionSet(sample, i))
{
logV(MD_WARN_MSG, "No such sample %d to delete from odrders map for session %u", sample, index);
}
}
}
}
Только примечание, идентификаторы, начинающиеся с символа подчеркивания, за которым следует буква верхнего регистра и идентификаторы, содержащие два последовательных символа подчеркивания, зарезервированы для компилятора. Не используйте их. –
@CaptainObvlious: спасибо, позаботьтесь. –