Neues Listenelement, mit Nummer als Namensmembervariable, erstellen



  • In "class warehouse {" erstelle ich die Liste
    "public: list<Department> m_departments;};",
    welche Elemente von "class Department
    {public: int m_number; Product* m_pproduct;};" enthält.

    Nachdem ich in der Mainfunktion
    "Department empty_department;" definiert,
    "empty_department.m_number = 1;" zugewiesen und
    "m_departments.push_back(empty_department);" anfügt habe, ist "empty_department.m_number==1" wahr.
    "(*m_departments.end()).m_number==0" aber leider auch.

    Weshalb funktioniert die Zuweisung nicht ?


  • Mod

    Der end-Iterator von praktisch jedem Container, bezieht sich nicht auf ein gueltiges Element. Man kann es sich eher so vorstellen (bei vielen Containern ist das sogar wortwoertlich so), dass er hinter das letzte Element zeigt*.

    *: Dieses Design hat auch einen tieferen Sinn.



  • Nach (*(m_departments.end()-1)).m_number + 1; bekomme ich folgendes zurück:
    E2094 'operator-' ist im Typ '_List_iterator<Department,_Nonconst_traits<Department> >' für Argumente des Typs 'int' nicht implementiert

    Gibt es eine andere Möglichkeit um auf das letzte Element der Liste zuzugreifen ?



  • 1. m_departments.back()
    2. Wozu list?
    3. Warum UN?



  • Sicher gibt es noch andere Möglichkeiten.
    Mit "m_departments.back()" funktioniert es
    und ich bedanke mich für die Hilfe 🙂


Anmelden zum Antworten