#stl #standards-compliance #stdvector
#stl #соответствие стандартам #stdvector
Вопрос:
Я только что понял, что использовал std::vector::data()
из-за сходства с std::string, но коллега указал, что это не стандартно.
По-видимому, Gcc реализует это, но, просматривая его включаемые файлы, я нашел этот комментарий:
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 464. Suggestion for new member functions in standard containers.
// data access
Мои вопросы:
- широко ли этот метод реализован другими компиляторами?
- включен ли он в C 0x?
(Мне также интересно, что DR 464
это такое, а также _GLIBCXX_RESOLVE_LIB_DEFECTS
в этом отношении, но я мог бы также задать другой вопрос для них).
Комментарии:
1. Это тоже поразило меня вчера, но, по-видимому, amp;(vector. front()) даст вам тот же результат, что и вызов vector.data(), и является стандартным.
2. В c 0x data() == amp;front() для непустых векторов в соответствии с моей копией стандартного документа.
Ответ №1:
Я не могу прокомментировать текущие реализации компилятора, но, взглянув на стандарт c 0x n3290.pdf, он указан в 23.3.6.4.