В С++ 11 array
, dynarray
, string
и vector
все получили метод data
, который:
Возвращает указатель на базовый массив, служащий в качестве хранилища элементов. Указатель таков, что диапазон [
data()
;data() + size()
) всегда является допустимым диапазоном, даже если контейнер пуст. [Источник]
Этот метод предоставляется в изменяемой версии и const
для всех применимых контейнеров, например:
T* vector<T>::data();
const T* vector<T>::data() const;
Все применимые контейнеры, кроме string
, которые предоставляют только const
версию:
const char* string::data() const;
Что здесь произошло? Почему string
получил shortchanged, когда char* string::data()
будет так полезен?