[string.capacity] (original) (raw)
27 Strings library [strings]
27.4 String classes [string.classes]
27.4.3 Class template basic_string [basic.string]
27.4.3.5 Capacity [string.capacity]
constexpr size_type size() const noexcept;constexpr size_type length() const noexcept;
Returns: A count of the number of char-like objects currently in the string.
Complexity: Constant time.
constexpr size_type max_size() const noexcept;
Returns: The largest possible number of char-like objects that can be stored in abasic_string.
Complexity: Constant time.
constexpr void resize(size_type n, charT c);
Effects: Alters the value of*thisas follows:
constexpr void resize(size_type n);
Effects: Equivalent to resize(n, charT()).
template<class Operation> constexpr void resize_and_overwrite(size_type n, Operation op);
Let
- o = size() before the call to resize_and_overwrite.
- p be a value of type charT* or charT* const, such that the range [p, p + n] is valid andthis->compare(0, k, p, k) == 0 is true before the call.
The values in the range [p + k, p + n] may be indeterminate ([basic.indet]). - m be a value of type size_type or const size_typeequal to n.
- OP be the expression std::move(op)(p, m).
Preconditions:
- OP does not throw an exception or modify p or m.
- After evaluating _OP_there are no indeterminate values in the range [p, p + r).
Effects: Evaluates OP, replaces the contents of *this with [p, p + r), and invalidates all pointers and references to the range [p, p + n].
Recommended practice: Implementations should avoid unnecessary copies and allocations by, for example, making p a pointer into internal storage and by restoring *(p + r) to charT() after evaluating OP.
constexpr size_type capacity() const noexcept;
Returns: The size of the allocated storage in the string.
Complexity: Constant time.
constexpr void reserve(size_type res_arg);
Effects: A directive that informs a basic_string of a planned change in size, so that the storage allocation can be managed accordingly.
Following a call toreserve,capacity()is greater or equal to the argument ofreserveif reallocation happens; and equal to the previous value ofcapacity()otherwise.
Reallocation happens at this point if and only if the current capacity is less than the argument of reserve.
Throws: length_errorifres_arg > max_size() or any exceptions thrown byallocator_traits <Allocator>::allocate.
constexpr void shrink_to_fit();
Effects: shrink_to_fit is a non-binding request to reducecapacity() to size().
[Note 1:
The request is non-binding to allow latitude for implementation-specific optimizations.
— _end note_]
It does not increase capacity(), but may reduce capacity()by causing reallocation.
Complexity: If the size is not equal to the old capacity, linear in the size of the sequence; otherwise constant.
Remarks: Reallocation invalidates all the references, pointers, and iterators referring to the elements in the sequence, as well as the past-the-end iterator.
[Note 2:
If no reallocation happens, they remain valid.
— _end note_]
constexpr void clear() noexcept;
Effects: Equivalent to: erase(begin(), end());
constexpr bool empty() const noexcept;
Effects: Equivalent to:return size() == 0;