std::map iterator gyldighed
Hej,Situationen er, at jeg har defineret en iterator, en class samt en std::map cirka som følger:
class User {
public:
void foo(void);
char *name;
}
std::map<char*, User*> user_list;
typedef std::map<char*, User*>::iterator it;
Jeg har derefter indsat flere elementer i user_list, deriblandt et element under entrien "bar". Dette element har jeg fundet en iterator, der peger på, ved at udføre:
it i = user_list.find("bar");
Jeg har derefter, fra andre threads, indsat og slettet elementer samt modificeret "name" i mit "bar" element.
Mit spørgsmål er så, om "i" stadig peger på det samme element eller om "i" invalideres af mine operationer på user_list?
Det skal tilføjes, at user_list er beskyttet mod samtidig tilgang af en mutex.
På forhånd mange tak,
jules