Warum sowohl Arrays in Laufzeitgröße als auch std :: dynarray in C ++ 14?
Draft C ++ 14 enthält sowohl Arrays in Laufzeitgröße als auch dasstd::dynarray
Container. Soweit ich weiß, besteht der einzige wirkliche Unterschied zwischen den beiden darin, dassstd::dynarray
hat eine STL-Schnittstelle (z.B.begin
, end
, size
usw.), während Arrays in Laufzeitgröße dies nicht tun. Warum braucht C ++ 14 beide?
Ich verstehe, dass Arrays in Laufzeitgröße Teil der Kernsprache sind, währendstd::dynarray
ist Teil der Standardbibliothek, aberder vorschlag fürstd::dynarray
macht deutlich, dass die Autoren von den Compilern in vielen Fällen eine besondere Unterstützung erwartenstd::dynarray
so dass es so effizient wie möglich sein kann, d. h. so effizient wie ein Array mit Laufzeitgröße. Insofern erscheint die Unterscheidung zwischen Sprache und Bibliothek etwas künstlich.
Warum benötigt C ++ 14 also sowohl Arrays in Laufzeitgröße als auchstd::dynarray
? Und das gegebenstd::dynarray
hat eine reichhaltigere (STLified) Schnittstelle. Warum also nicht einfach Arrays in Laufzeitgröße löschen, wenn man das annimmt?std::dynarray
kann mit gleicher Laufzeiteffizienz implementiert werden?
Klärung
Wenn ich von "Arrays in Laufzeitgröße" spreche, beziehe ich mich auf eine neue C ++ 14-Kernsprachfunktion, die in beschrieben wirdN3639, nicht auf herkömmliche C-Arrays oder VLAs oder irgendetwas in C ++ 11.