Frage zu STL und Iterator



  • stl mal wieder schrieb:

    Jetzt habe ich da einen Vergleich zwischen signed und unsigned.
    Und: Woher weiß ich, dass size_t int und nicht long oder long long ist?
    Oder ist size_t definitionsgemäß unsigned int?

    Nee. int ist keineswegs richtig, sondern nur für Nubes eine Hilfe, die dauernd Fehler machen.



  • volkard schrieb:

    Naja, schwupps, habe ich eine Klasse PersistentesArray von safeArray abgeleitet, die als zuätzliches Attribut einen Dateinamen als String hat und im Konstruktor die Datei liest und im Destruktor die Datei schreibt.

    Die Klasse hat also zwei Aufgaben, die nichts miteinander zu tun haben.

    volkard schrieb:

    Erbe ich normalerweise nicht von Containern, weil sie normalerweise keinen virtuellen Destruktor haben oder ist es umgegehrt?

    Weil es überhaupt keinen Sinn ergibt. Das hat nichts mit Destruktoren zu tun.



  • TyRoXx schrieb:

    volkard schrieb:

    Naja, schwupps, habe ich eine Klasse PersistentesArray von safeArray abgeleitet, die als zuätzliches Attribut einen Dateinamen als String hat und im Konstruktor die Datei liest und im Destruktor die Datei schreibt.

    Die Klasse hat also zwei Aufgaben, die nichts miteinander zu tun haben.

    Doch, die haben was mineinander zu tun.
    Aber die Eigentliche Arbeit wird in safeArray und fstream erledigt.

    volkard schrieb:

    Erbe ich normalerweise nicht von Containern, weil sie normalerweise keinen virtuellen Destruktor haben oder ist es umgegehrt?

    Weil es überhaupt keinen Sinn ergibt. Das hat nichts mit Destruktoren zu tun.[/quote]
    Doch, auch.



  • stl mal wieder schrieb:

    safeArray& operator=(const safeArray& rhs)    
        {
            safeArray temp(rhs);
    
            std::swap(m_array,temp.m_array);
            std::swap(m_count,temp.m_count);
            return *this;
        }
    

    Du kannst hier bei dem Copy-&-Swap Trick noch eine ggf unnötige Kopie sparen, indem Du dem Compiler das Kopieren überlässt, der das ggf wegoptimiert:

    safeArray& operator=([b]safeArray temp[/b])    
        {
            this->swap(temp); // ruhig auslagern, das swap    
            return *this;
        }
    

Anmelden zum Antworten