C ++ 98/03
. , .
++ 11/14
[string.require]:
char basic_string . basic_string s, &*(s.begin() + n) == &*s.begin() + n n , 0 <= n < s.size().
&str.front() &str[0] .
++ 17
str.data(), &str.front() &str[0] .
:
charT* data() noexcept;
: p , p + i == &operator[](i) i [0, size()].
: .
: at p + size().
.data() .
.front():
const charT& front() const;
charT& front();
: !empty().
: operator[](0).
operator[]:
const_reference operator[](size_type pos) const;
reference operator[](size_type pos);
: pos <= size().
: *(begin() + pos) if pos < size(). charT charT(), undefined.
: .
: .
. . :
3 Basic_string - ([container.requirements.general]).
, :
, ([random.access.iterators]) iterator const_iterator ([iterator.requirements.general]).
:
, , n a (a + n), *(a + n) *(addressof(*a) + n), .
-, - ++ 17, papers.
:
assert(*(a + n) == *(&*a + n));
, , , , , , , , . , , , , . , char*, , &str.front() &str[0] .