为什么需要扩容
vector默认size==capacity=0
string默认size=0 capacity=15
如果我们一次要向string对象中写的数据大于15 就会因容量不足造成内存错误
1.reserve(n)对capacity操作
- reserve请求开辟x空间,实际上编译器会为我们开辟大于或等于x的空间,具体值根据不同的编译器有所不同,如g++会给等于数值大小的空间、visual会给数值1.5倍大小的空间;
- n > capacity : 扩容
- size < n < capacity : 缩小到n
- n < size:capacity缩小到size
2.resize(n)对size操作
- n > capacity > size : size增加到n capacity增加到大于size 新空间没有指定默认为\0
- size < n < capacity : size增加到n capacity不变 新空间没有指定默认为\0
- n < size : 元素个数只保留n个 其余的丢弃 capacity不变
string用resize的原因是
你resize了10000,里面数据都是\0 当放入数据后 数据末尾是\0 好处理!