Hej
Jeg sidder og roder med et multimap, hvori jeg linker nogle int værdier til pointere..
Jeg har så brug for at slette nogle specifikke keys og deres values.
Min kode der skal slette de entries ser således ud:
multimap<int, Chain*>::iterator temp;
for ( int i = 0; i < 3; i++ )
{
for (temp = map.begin(); temp != map.end(); temp++ )
{
if ( (*temp).second->direction == 0 && (*temp).second->x == (*chain2).second->x )
{
map.erase( temp );
break;
}
}
}
Hvis jeg fjerner den yderste forløkke, så får jeg rigtigt nok fjernet 1 key og dens value, men der er 3 (i dette eksempel, har hardcodet 3 for at koge problemet ned) der tilfredsstiller if sætningen.
chain2 er også en iterator der peger på et entry i mit multimap
Håber i kan hjælpe mig videre
På forhånd tak
Troels
Edit:
Ja, det hjælper vist at formulere sit problem for andre, for efter 3timer fandt jeg endelig en måde at løse mit problem:
multimap<int, Chain*>::iterator temp;
int tempX = (*chain2).second->x;
for ( int i = 0; i < 3; i++ )
{
for (temp = map.begin(); temp != map.end(); temp++ )
{
if ( (*temp).second->direction == 0 && (*temp).second->x == tempX )
{
map.erase( temp );
break;
}
}
}
Jeg har dog ikke den helt store forståelse for, hvorfor jeg ikke kan referere til chain2 flere gane
- så hvis der sidder en, der kan forklare mig dette, vil jeg være meget taknemmelig
Indlæg senest redigeret d. 01.06.2009 23:18 af Bruger #10853