In diesem Stück Code füge ich ein Paar auf einer Karte und alles ist in Ordnung, aber wenn ich ein Paar, das nicht das letzte ist, die Karte nicht löscht Fügen Sie weitere Paare hinzu. Was mache ich falsch ??STL Karte fügt kein Paar nach dem Entfernen der ersten Paare
SomeClass::add(Object object)
if (!object.empty())
{
ObjectList::iterator result = find(object.name());
if (result == ObjectList.end())
{
object.order(size() + 1);
ObjectList.insert(orderedObject(object.order(), object));
}
else
{
ObjectList[result->first] = object;
}
}
Object und OrderedObject erklärt sich wie folgt:
typedef std::pair<int, Object> orderedObject;
typedef std::map<int, Object> ObjectList;
Dies ist der Löschcode:
SomeClass::eraseNamed(std::string aName)
{
if (!isEmpty())
{
ObjectList::iterator result;
result = find(aName);
if (result != ObjectList.end())
{
ObjectList.erase(result);
reorgObjectList();
return true;
}
}
return false;
}
Für find-Methode:
ObjectList::iterator SomeClass::find(std::string aName)
{
ObjectList::iterator result = ObjectList.begin();
while (result != ObjectList.end())
{
if (aName == result->second.name())
return result;
result++;
}
return result;
}
und für reorgObjectList:
bool SomeClass::reorgObjectList()
{
ObjectList::iterator i=ObjectList.begin();
int j=1;
for (i = ObjectList.begin(); i != ObjectList.end(); ++i)
{
if(j!=i->second.order())
i->second.order(j);
j++;
}
return true;
}
Irgendwelche Vorschläge ???
Wie machst du das Löschen? –
Wo wird das Objekt deklariert? – jalf
Sie sollten mehr Code posten ... wie es jalf andeutet, wo wird das Objekt deklariert? Es scheint, als könnte es hier andere Probleme geben, und wir können Ihnen vielleicht Vorschläge zu Nutzung, Stil und Design machen. Ich benutze Karten die ganze Zeit ... es scheint, dass ich sie nie so benutze. – Tom