Seite 1 von 1

[std::map] Iteration über Map in einer Map

Verfasst: 30.10.2011, 21:13
von RazorX
Servus,

habe gerade ein sehr seltsames Problem. Ich gehe eine Map in einer Map durch und sobald ich auf das erste Element der Map zugreife bekomme ich als Iterator nur Quatsch zurück.

Code: Alles auswählen

TexturePool::~TexturePool()
{
	std::map<std::wstring, std::map<std::wstring, Texture*>*>::iterator itBase;
	std::map<std::wstring, Texture*>::iterator itSub;
	for(itBase = mTextures.begin() ; itBase != mTextures.end() ; ++itBase)
	{
		std::map<std::wstring, Texture*>* subMap = itBase->second;
		for(itSub = subMap->begin() ; itSub != subMap->end(); ++itSub);
		{
/* Hier ist der Iterator itSub kaputt und zeigt auf falsche Adressen */
			delete itSub->second;
			--mCount;
		}
		delete itBase->second;
	}
}
Hat jemand so ein Problem schon gehabt? Schonmal danke im vorraus!

LG

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:08
von Helmut
Greifst du im DTor von Texture auf die Map zu?

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:20
von RazorX
Nein, da komme ich ja auch noch nichtmals hin. Bevor ich "delete itSub->second;" aufrufe ist der Iterator schon kaputt.

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:22
von Schrompf
Oder stehen vielleicht von Haus aus bereits ruinierte Zeiger in den maps? Hast Du den Inhalt der Maps vorher schonmal für was benutzt?

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:24
von RazorX
Schrompf hat geschrieben:Oder stehen vielleicht von Haus aus bereits ruinierte Zeiger in den maps? Hast Du den Inhalt der Maps vorher schonmal für was benutzt?
Ne der Inhalt ist korrekt, die Daten sind verwertbar und wenn ich über den itBase im VisualStudio mal die Pointer verfolge komme ich ja auch korrekt zu den Einträgen.

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:35
von joggel
Ist der schon beim ersten Durchgang ungültig?
Oh, sorry. Habe gerade deinen Beitrag gelesen, wo du ja sagst, das du nicht mal zu "itBase->second;" kommst.

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:40
von kimmi
Ist ein Schreibfehler:

Code: Alles auswählen

for(itSub = subMap->begin() ; itSub != subMap->end(); ++itSub); <- ein Semikolon zuviel
Gruß Kimmi

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:53
von RazorX
Irgendwie schon fast peinlich :D Danke

Re: [std::map] Iteration über Map in einer Map

Verfasst: 31.10.2011, 12:56
von kimmi
Wem das noch nie passiert ist, der werfe den ersten Stein ;).

Gruß Kimmi