std::basic_string::reserve

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
void reserve( size_type new_cap = 0 );

提示 std::basic_string 对象有计划地更改大小,使得它能准确地管理存储分配。

  • new_cap 大于当前 capacity() ,则分配新存储,并令 capacity() 大于或等于 new_cap
  • new_cap 小于当前 capacity() ,则这是非强制收缩请求。
  • new_cap 小于当前 size() ,则这是非强制收缩以适应请求,等价于 shrink_to_fit() (C++11 起)

若发生容量更改,则非法化所有迭代器与引用,包含尾后迭代器。

目录

[编辑] 参数

new_cap - string 的新容量

[编辑] 返回值

(无)

[编辑] 异常

new_cap 大于 max_size() 则抛出 std::length_error

可能抛出任何 std::allocator_traits<Allocator>::allocate() 所抛的异常,如 std::bad_alloc

[编辑] 复杂度

至多与 string 的 size() 成线性

[编辑] 示例

#include <cassert>
#include <string>
 
int main()
{
    std::string s;
    std::string::size_type new_capacity{ 100u };
    assert(new_capacity > s.capacity());
 
    s.reserve(new_capacity);
    assert(new_capacity <= s.capacity());
}


[编辑] 参阅

返回当前分配存储中能保有的字符数
(公开成员函数) [编辑]