Ich möchte einen Schlüssel aus einer STL-Karte entfernen. map.erase()
tut jedoch nichts. Wie würde ich dabei vorgehen?Entfernen Sie einen Schlüssel aus einer C++ - Karte
Antwort
Es hängt ganz davon ab, wie Sie es nennen, aber es klingt wie Sie möglicherweise die first,last
Option verwenden. Wenn Sie es sind, müssen Sie daran denken, dass es Elemente beginnend bei first
, aber bis außerlast
löscht. Wenn Sie dieser Regel folgen, sollte die iteratorbasierte Entfernung entweder als einzelnes Element oder als Bereich funktionieren.
Wenn Sie mit dem Schlüssel löschen, sollte es auch funktionieren, vorausgesetzt, der Schlüssel ist dort natürlich.
Der folgende Beispielcode zeigt alle drei Methoden in Aktion:
#include <iostream>
#include <map>
int main (void) {
std::map<char,char> mymap;
std::map<char,char>::iterator it;
mymap['a'] = 'A'; mymap['b'] = 'B'; mymap['c'] = 'C';
mymap['d'] = 'D'; mymap['e'] = 'E'; mymap['f'] = 'F';
mymap['g'] = 'G'; mymap['h'] = 'H'; mymap['i'] = 'I';
it = mymap.find ('b'); // by iterator (b), leaves acdefghi.
mymap.erase (it);
it = mymap.find ('e'); // by range (e-i), leaves acd.
mymap.erase (it, mymap.end());
mymap.erase ('a'); // by key (a), leaves cd.
mymap.erase ('z'); // invalid key (none), leaves cd.
for (it = mymap.begin(); it != mymap.end(); it++)
std::cout << (*it).first << " => " << (*it).second << '\n';
return 0;
}
die Ausgänge:
c => C
d => D
Ich fühle mich so dumm, wenn ich den Override für 'const key_type &' vermisse. Danke für das Aufzeigen! –
Sie zu haben würde, um den Iterator erste
map.erase(ITERATOR) ;
finden Machen Sie das sicher, Sie müssen sicherstellen, dass ITERAT ODER existiert jedoch. Beispiel:
#include <stdio.h>
#include <map>
using namespace std ;
int main()
{
map<int,int> m ;
m.insert(make_pair(1,1)) ;
map<int,int>::iterator iter = m.find(1) ;
if(iter != m.end())
m.erase(iter);
else puts("not found") ;
}
- 1. Nullwerte aus einer Karte entfernen?
- 2. Behalten Sie bestimmte Schlüssel einer Hash-Karte
- 3. Einen gegebenen Schlüssel aus einer Groovy Map entfernen
- 4. Char * als Schlüssel in einer Karte C++
- 5. Entfernen Sie doppelte Schlüssel aus Multidimensional Array
- 6. Wie alle Polylinien entfernen aus einer Karte
- 7. Entfernen Sie Schlüssel aus dem Wörterbuch
- 8. Entfernen Sie einen Wert aus einer Abfragezeichenfolge
- 9. Entfernen Sie einen Knoten aus einer TreeView
- 10. Entfernen Sie Wörter aus einer Karte in Java
- 11. Polygon aus der Karte entfernen
- 12. Überprüfen, ob die Karte in C++ alle Schlüssel aus einer anderen Karte enthält
- 13. Entfernen Sie die Erweiterung aus dem Schlüssel
- 14. Wie bestimmte Schlüssel aus Hive-Kartentyp entfernen?
- 15. Erstellen Sie eine verschachtelte Karte aus dem Schlüssel in groovy
- 16. C# Entfernen einer Liste aus einer Liste
- 17. Entfernen Sie einen Marker von einer GoogleMap
- 18. wie Schlüssel-Wert-Liste aus einer Hash-Karte zurückzukehren
- 19. Kopieren C++ Karte in Schlüssel- und Wertvektoren
- 20. So entfernen Sie zusätzliche Json-Schlüssel aus MongoDB Ergebnis
- 21. Effiziente Weise zu finden, ob Karte einen der Schlüssel aus einer Liste enthält/iterable
- 22. Entfernen Sie einen Schlüssel aus einem Wörterbuch für einen bestimmten Wert
- 23. Wie ein Schlüssel einer Karte sortieren
- 24. So entfernen Sie einen XmlNode aus XmlNodeList
- 25. So entfernen Sie einen Benutzer aus Jenkins
- 26. Holen Sie sich den Schlüssel von der Karte der Karte
- 27. Überprüfung Inhalt einer Karte in einer anderen Karte in Java
- 28. Valence: Entfernen Sie einen Benutzer aus Abschnitt
- 29. Verwenden Sie den Datentyp (Klassenart) als Schlüssel in einer Karte
- 30. Entfernen Sie einen Wert aus einer Querystring Teil 2
Löschen tut etwas. Wie benutzt du es? Und was lässt dich glauben, dass es nichts tut? –
map.serase (Schlüssel). –
Und zu meiner zweiten Frage? –