std::string的resize()与reserve()的区别
生活随笔
收集整理的這篇文章主要介紹了
std::string的resize()与reserve()的区别
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
std::string的resize()與reserve()的區(qū)別:
resize():改變的是size()與capacity()的大小
(1)、比原來的變小之后,后面的會被截?cái)?/p>
(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改變?yōu)?,多余字符被截掉了,只剩下hestd::cout << "s1=" << s1 << " s1.size=" << s1.size() << " s1.capacity=" << s1.capacity() << endl;std::cout << "after resize to 100" << endl;s1.resize(100);//尺寸由2改變?yōu)?00,后面的數(shù)據(jù)被填充了98個(gè)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; }結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的std::string的resize()与reserve()的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 彩虹仿优云宝模板,最新彩虹代shua网仿
- 下一篇: 软件工程师 VS 硬件工程师