std :: string容量大小

use*_*234 4 c++ string size

字符串的容量大小是否总是15的倍数?

例如:在所有情况下,容量为15

string s1 = "Hello";

string s2 = "Hi";

string s3 = "Hey";
Run Code Online (Sandbox Code Playgroud)

还是随机的?

Jam*_*lis 8

字符串的容量大小是否总是15的倍数?

没有; 关于a的能力的唯一保证std::strings.capacity() >= s.size().

一个好的实现可能会以指数方式增加容量,以便每次需要重新分配底层数组时它的大小翻倍.这是必需的,std::vector因此push_back可以具有摊销的恒定时间复杂度,但是没有这样的要求std::string.

此外,std::string实现可以执行小的字符串优化,其中小于某些字符的字符串存储在std::string对象本身中,而不是存储在动态分配的数组中.这很有用,因为许多字符串很短,动态分配可能很昂贵.如果存储字符串所需的字节数小于将指针存储到动态分配的缓冲区所需的字节数,则通常会执行小的字符串优化.

我不知道你的特定实现是否执行小字符串优化.