Wenn wir ein map<int,int>
erstellen, können wir es löschen, aber es bleibt immer noch im Speicher, oder? Z.B.Wie kann ich eine Map zerstören und einen Map-Zeiger in C++ füllen?
#include <map>
using namespace std;
int main(){
map<int,int> myMap;
myMap[1] = 2;
myMap.clear();
return 0;
}
Aber wenn wir einen Zeiger anstelle der tatsächlichen map
gesetzt, konnte ich es zerstören mit delete
, aber ich konnte die Karte die gleiche Art und Weise nicht füllen:
#include <map>
using namespace std;
int main(){
map<int,int> *myMap = new map<int,int>;
// myMap[1] = 2;
delete myMap;
return 0;
}
uncommenting die myMap[1] = 2;
Linienenden up mit dem Fehler:
[email protected]:~$ g++ test.cpp test.cpp: In function ‘int main()’: test.cpp:8:14: error: no match for ‘operator=’ (operand types are ‘std::map’ and ‘int’) myMap[1] = 2; ^ In file included from /usr/include/c++/5/map:61:0, from test.cpp:2: /usr/include/c++/5/bits/stl_map.h:296:7: note: candidate: std::map<_Key, _Tp, _Compare, _Alloc>& std::map<_Key, _Tp, _Compare, _Alloc>::operator=(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int; _Tp = int; _Compare = std::less; _Alloc = std::allocator >] operator=(const map& __x) ^ /usr/include/c++/5/bits/stl_map.h:296:7: note: no known conversion for argument 1 from ‘int’ to ‘const std::map&’
Wie destruct ich ein map
in C++? Ist es "zerstörbar"?
Wie initialisiere ich auch die Werte eines map<>
Zeigers?
'(* myMap) [1] = 2; 'macht den Trick, wenn Sie 'neu' verwenden. Der Rest ist in CinCout Antwort unter – GMichael
Gleicher Grund 'int * i = new int (0); i + = 5; delete i; 'fügt dem' int' nicht 5 hinzu. – immibis
* "Wenn wir eine' map 'erstellen, können wir sie löschen, aber sie bleibt immer noch im Speicher, richtig?" *, Das Kartenverwaltungsobjekt selbst (das ist wahrscheinlich ein oder zwei Dutzend Byte, je nachdem, ob Sie es sind) Kompilieren einer 32-Bit- oder 64-Bit-App und ob die "Map" -Implementierung Daten zur Unterstützung des Debugging hinzugefügt hat, aber der Speicher für die Datenelemente, die zum Speichern verwendet werden, wird zur Wiederverwendung durch die Anwendung freigegeben. Zusammenfassend ist es sehr selten wert, mehr als ein 'clear' auf einer' map' zu machen. Dies steht im Gegensatz zu "Vektor", der dazu neigt, in dem Speicher zu hängen, in dem Elemente früher gespeichert wurden. –