std::string的resize()与reserve()的区别
生活随笔
收集整理的這篇文章主要介紹了
std::string的resize()与reserve()的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
std::string的resize()與reserve()的區別:
resize():改變的是size()與capacity()的大小
(1)、比原來的變小之后,后面的會被截斷
(2)、比原來的變大之后,后面的會被填充新的東西,不同的編譯器可能會不同
reserve():改變的只是capacity()的大小
程序如下:
#include <math.h> #include <stdio.h> #include <string> #include<iostream>using namespace std;int main() {std::string s1("hello");std::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "after resize to 2" << endl;s1.resize(2); //尺寸由5改變為2,多余字符被截掉了,只剩下hestd::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "after resize to 100" << endl;s1.resize(100);//尺寸由2改變為100,后面的數據被填充了98個astd::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "\n";std::cout << "===================================================================" << endl;std::cout << "\n";std::string s2("hello");std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;std::cout << "after reserve to 20" << endl;s2.reserve(20); //只改變capacity()的大小,其他的不變std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;std::cout << "after reserve to 2" << endl;s2.reserve(2); //只改變capacity()的大小,其他的不變std::cout << "s2=" << s2 << " s2.size=" << s2.size() << " s2.capacity=" << s2.capacity() << endl;return 0; }結果:
總結
以上是生活随笔為你收集整理的std::string的resize()与reserve()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 彩虹仿优云宝模板,最新彩虹代shua网仿
- 下一篇: 【Python爬虫实战】使用Seleni