Почему в C ++ 14 и массивы времени выполнения и std :: dynarray?
Проект C ++ 14 включает в себя как размерные массивы, так иstd::dynarray
контейнер. Из того, что я могу сказать, единственная реальная разница между ними состоит в том, чтоstd::dynarray
имеет интерфейс STL (например,begin
end
size
и т. д.), в то время как во время выполнения массивов нет. Так зачем C ++ 14 оба?
Я понимаю, что размерные массивы являются частью основного языка, в то время какstd::dynarray
является частью стандартной библиотеки, нопредложение дляstd::dynarray
ясно дает понять, что авторы ожидают, что компиляторы во многих случаях будут предлагать особую поддержкуstd::dynarray
так что он может быть настолько эффективным, насколько это возможно, т. е. таким же эффективным, как массив размера во время выполнения. Таким образом, различие между языком и библиотекой кажется несколько искусственным.
Итак, еще раз, почему C ++ 14 нужны как массивы времени выполнения иstd::dynarray
? И учитывая, чтоstd::dynarray
имеет более богатый интерфейс (STLified), почему бы не просто удалить массивы во время выполнения, если предположить, чтоstd::dynarray
может быть реализован с равной эффективностью выполнения?
осветление
Когда я говорю оразмерные массивы "I"Я имею в виду новую особенность языка C ++ 14, которая 'описано вN3639, не для традиционных массивов C или VLA или чего-либо в C ++ 11.