string类的重要接口说明(1):reserve(),resize()
一、reserve() 和 resize()
注意不要把
reserve(储备)和reverse(逆向)搞混了!
1.1
- reserve():用于为字符串预留空间(扩容),以便后续操作可以直接在预留位置存放元素。

PS:
reserve(size_t n) 为string预留空间,不改变有效元素个数;当 reserve 的参数小于底层空间总大小时,reserve 不会改变容量大小。
- resize():用于调整字符串大小,包括增大和缩小字符串的大小。

resize(size_t n)和resize(size_t n, char c)都是将有效字符个数改变到 n 个。不同的是:当有效字符个数增大时,前者会用 ‘\0’ 进行填充,后者用字符 c 进行填充。
1.2 resize(n) 对 string::size、string::capacity 的影响
-
n > capacity ——> 扩容+尾插

-
size < n < capacity ——> 尾插

-
n < size ——> 删除数据,只保留前 n 个

PS:
resize() 在改变元素个数时,如果是将元素个数增加,可能会改变 capacity 的大小—— n > capacity、size < n < capacity 这两种情况;如果是将元素个数减少,则不改变 capacity 的大小—— n < size 的情况。