string中的 reserve()和 resize()

 reserve() 为容器预留足够的空间,避免不必要的重复分配。预留空间大于等于字符串的长度。预留空间可以通过capacity()查看。

 resize() 调整字符串的大小。如果字符串长度变小,多余的字符会被截掉。若长度变大,可以设置填充的字符。长度可以通过size()查看。

1. reserve()

string str = "April";
str.reserve(20);

  str的预留空间为15。

  

调用函数reserve()后,预留空间变为31。(内存按照(n*16-1)分配)

 

2.resize()

  字符串str的长度变短,多余的字符被裁掉了。

string str = "April";
str.resize(3);

 

  字符串str的长度变长,使用字符 ‘.’填充。(默认填充空字符)

string str = "April";
str.resize(10);