Nicht-veränderbares Array mit dynamischer Größe [duplizieren]

8

Gibt es einen C ++ - Typ, der sich wie ein "dynamisch veränderbares, nicht veränderbares Array" verhält? Diese Art von Typ kann als eines von zwei Dingen betrachtet werden:

  • vector<T> , aber ohne resize , push_back , usw.
  • array<T,N> , aber N ist dynamisch und nicht statisch.

Ich möchte keine Lösung, die nur funktioniert, wenn der Typ der Elemente innerhalb des Arrays ein nicht kopierbarer Typ ist. Ich möchte eine generische Lösung.

    
tohava 05.03.2015, 12:50
quelle

1 Antwort

22

Ja, da ist (ziemlich). std::unique_ptr<T[]> . Die primäre Vorlage hat für diesen Fall eine teilweise Spezialisierung, die die entsprechende Schnittstelle bereitstellt (Operator [] , kein Operator * etc.)

Alternativ können Sie std::vector in Ihre eigene Klasse umbrechen und ihre Schnittstelle einschränken. Sie können dies sogar tun, indem Sie eine Klasse von std::vector mit nicht öffentlicher Vererbung ableiten und nur die relevanten Teile ihrer Schnittstelle veröffentlichen:

%Vor%     
Angew 05.03.2015, 12:54
quelle

Tags und Links