Dlaczego zarówno macierze wielkości runtime, jak i std :: dynarray w C ++ 14?
Draft C ++ 14 zawiera zarówno tablice runtime, jak istd::dynarray
pojemnik. Z tego co mogę powiedzieć, jedyną prawdziwą różnicą między nimi jest tostd::dynarray
ma interfejs STL (np.begin
, end
, size
itp.), podczas gdy tablice wielkości runtime nie. Dlaczego więc C ++ 14 ich potrzebuje?
Rozumiem, że tablice wielkości runtime są częścią podstawowego językastd::dynarray
jest częścią standardowej biblioteki, alepropozycja dlastd::dynarray
wyjaśnia, że autorzy oczekują, że kompilatory w wielu przypadkach oferują specjalne wsparciestd::dynarray
aby mógł być tak wydajny, jak to tylko możliwe, tj. tak wydajny jak tablica wielkości runtime. W związku z tym rozróżnienie język / biblioteka wydaje się nieco sztuczne.
Więc ponownie, dlaczego C ++ 14 potrzebuje zarówno macierzy wielkości runtime, jak istd::dynarray
? I biorąc pod uwagę tostd::dynarray
ma bogatszy (STLified) interfejs, dlaczego nie po prostu upuścić tablice wielkości runtime, zakładając, żestd::dynarray
można zaimplementować z równą wydajnością czasu wykonywania?
Wyjaśnienie
Kiedy mówię o „tablicach wielkości runtime”, mówię o nowej funkcji języka podstawowego C ++ 14 opisanej wN3639, nie do tradycyjnych tablic C lub VLA lub czegokolwiek w C ++ 11.