日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

std::string的resize()与reserve()的区别

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。