Почему std :: vector :: data и std :: string :: data различаются?

Новый метод вектора data () предоставлял константную и неконстантную версии.
Однако строковый метод data () предоставляет только константную версию.

Думаю, они изменили формулировку о std :: string , так что теперь символы должны быть смежными (например, std :: vector ).

Был ли пропущен std :: string :: data ? Или это хорошая причина разрешить только константный доступ к базовым символам строки?

примечание: std :: vector :: data имеет еще одну приятную особенность, это не поведение undefined для вызова data () на пустом векторе. В то время как & vec.front () - неопределенное поведение, если оно пусто.

33
задан deft_code 22 September 2011 в 17:38
поделиться