64,682
社区成员
发帖
与我相关
我的任务
分享
size_type size() const throw()
{ //按照标准文档的要求,不抛出异常,以下同理可得,不再赘述!
return finish - start;
}
size_type length() const throw()
{
return size();
}
size_type max_size() const throw()
{
return size_type(-1) / sizeof(value_type) - 1;
}
size_type capacity() const throw()
{ //这里的计算本来不应该减 1 的,有意这样做是为了确保留有一个字符的空间(包括宽字符),方便做
// C风格字符串的转换,写入空字符,用于成员函数c_str()
return end_of_storage - start - 1;
}
bool empty() const throw()
{
return start == finish;
}
iterator begin() throw()
{
return iterator(start);
}
const_iterator begin() const throw()
{
return const_iterator(start);
}
iterator end() throw()
{
return iterator(finish);
}
const_iterator end() const throw()
{
return const_iterator(finish);
}
reverse_iterator rbegin() throw()
{
return reverse_iterator(end());
}
const_reverse_iterator rbegin() const throw()
{
return const_reverse_iterator(end());
}
reverse_iterator rend() throw()
{
return reverse_iterator(begin());
}
const_reverse_iterator rend() const throw()
{
return const_reverse_iterator(begin());
}
reference operator [] (size_type n) throw()
{
assert(n < size());
return *(start + n);
}
const_reference operator [] (size_type n) const throw()
{
assert(n < size());
return *(start + n);
}
reference at(size_type n)
{
if(n < size())
return *(start + n);
else
throw std::out_of_range("invalid string position");
}
const_reference at(size_type n) const
{
if(n < size())
return *(start + n);
else
throw std::out_of_range("invalid string position");
}
allocator_type get_allocator() const throw()
{
return allocator_type();
}