R
Man sollte halt nur genau das global machen, was auch wirklich global sein muss. Z.B. ein Logger fuer die Anwendung.
Richtig, Manche Entitäten haben von der Logik her nun mal eine eher globale Natur.
Man kann globale Variablen auch dann vermeiden ... aber leidet an anderen Stellen dafuer. Parameterübergaben z.b. Deine "globalen" Parameter sind dann halt Zwangs-Parameter bei der Erzeugung, wenn am Object oder in den Hirarchie danach der globale Parameter gebraucht wird. Das kann, muss aber nich, genauso umständlich, verwirrend etc sein ...
Ist also dann auch ne Abwägungs-Frage.
std::vector:
Die meisten "Lehrbücher" nehmen den zum Einstieg, weil er mit dem c-Array am verwandesten und am besten erklärbar ist.
Die Folge: Von Neueinsteigern viel zu oft benutzt!
Der vector hat arg Situationsbedingtes Verhalten was die Performance angeht ...
Als Vorteil / EIgenschaft bringt er dabei nur folgendes mit:
- Schneller Index zugriff
- Elemente / Speicher reservierbar
- Elemente liegen am Stueck im Speicher vor (C-Array kompatiblitaet).
Dementsprechend definieren sich auch die Anwendungsgebiete:
- Du musst Schnell per positionsangabe auf ein Element zugreifen koennen, ohne ne Iteration mit x Schritten anzufangen ...
- Du willst speicher im voraus allocieren, so das einfuegeoperationen direkt kein allocator aufrufen
- du brauchst ne structur um nen C-Interface zu bedienen ...
Wenn von dem nix in Frage kommt, sind andere Container immer die bessere Wahl.
Manchmal baut man sich auch benutzerdefinierte Container aus mehreren stl basiscontainern zusammen ....
Oder muss ich mir für jede "Unterklasse" einen eigenen Container machen?
In C++ kommts sehr auf die Anwendung drauf an ...
Das DU mehrere Klassen in einen Container Sperren willst, deutet eigentlich schon an das Du sie "gleichbehandeln" willst -> Vererbung.
Es sollte aber auch wirklich gemeinsame Funktionalitaet geben
Vererbung hat aber auch Nachteile, grad in sachen Performance.
Also versucht man das Gleichbehandeln durch generische Programmierung (Templates) aufzuloesen, dann kommst um unterschiedliche container nicht drumherum.
Oft Abwägungssache !
Ciao ....