姓名:王海桐 学号:21021211072 学院:电子工程学院
友友你是否也经常将string类中的reserve和resize接口傻傻分不清楚,时不时用混导致出错呢?
那现在让我们一起解决它吧!
string::resever
只改变capacity的值,不改变size的大小
string::resize
在增容时会将增容部分全部填充为“/0”,capacity改变的同时size也会改变。
使用resever进行增容时:
resize和reverse接口都不使用,自动增容时:
使用resize进行增容时:
至于增容的规律,不同的编译库都是实现STL,但是要注意他们要按c++标准去实现string、vector等。具体底层如何实现,比如插入数据如何增容等等,是他们实现人决定的,不同的平台可能不同。
补充点小知识:
关于直接输出和用c_str接口输出的区别
既然接口不能全部输出,那是不是就没用呢?
当然不是啦,有些特殊情况下只能使用c_str接口输出,比如下面的情况:
活学活用:我们就用string::c_str()验证一下resize和reverse的关于“/0”填充的区别吧,源代码如下
使用reserve运行效果:
使用resize运行效果:
了解了STL中string类的这么多有趣玩法,各位友友是不是跃跃欲试了呢?