2017-12-11 2 views
0

Ich möchte wissen, ob ich std::map löschen muss, bevor Sie es verwenden? Zum Beispiel sollte ich im folgenden Code m_map.clear im Konstruktor aufrufen?Sollte ich vor der Verwendung aufrufen std :: map in cpp

struct stu 
{ 
    ... 
} 

class A 
{ 
public: 
    A() 
     { 
      m_map.clear; // is this necessary? 
     }; 
    ~A(); 

private: 
    map<int ,stu> m_map; 
} 

Antwort

3

Es ist nicht notwendig, clear() im Konstruktor Ihrer Klasse aufzurufen.

Ein guter Weg, um genau zu wissen, was aus der STL eine bestimmte Methode der Fall ist, und somit, wann und warum Sie es nennen sollte, ist durch eine gute Referenz-Website wie die Suche: http://en.cppreference.com/w/cpp/container/map

Wenn Sie navigieren Sie die Seite , finden Sie die clear Methode, und nach dem Folgen des Links, eine Beschreibung der Funktionalität "Entfernt alle Elemente aus dem Container." Haben Sie diesem Container schon Elemente hinzugefügt? Nein, also muss diese Methode nicht aufgerufen werden.

Außerdem: Woher wissen Sie, in welchem ​​Status sich ein Datenelement befindet, wenn Sie keine Initialisierungsoperation ausführen? In diesem Fall gibt es eine Garantie, dass der Standardkonstruktor einer Membervariable, die Variable std::map m_map, aufgerufen wird. Der Standardkonstruktor einer Klasse ist die Konstruktormethode, die keine Parameter akzeptiert oder bei der alle Parameter über Standardwerte bereitgestellt werden. Die angegebene Referenzwebsite gibt erneut den Standardkonstruktor "1) Standardkonstruktor an. Konstruiert einen leeren Container." So ist Ihr Container (und viele der anderen STL-Container) perfekt für den sofortigen Einsatz, ohne zu räumen.

Verwandte Themen