淺學C++ STL--string容器程式碼筆記
阿新 • • 發佈:2018-11-10
capacity()
string類capacity()容器的大小會因編譯器的不同而得到的容量大小有所不同;
VS2017中string類首次分配空間為15,溢位之後分配為+16,之後每溢位16就+16,簡而言之規律就是:15+16+16+16+;
VC++6.0中string類首次分配空間為31,溢位之後分配為+32,之後每溢位32就+32,簡而言之規律就是:31+32+32+32+;
還有測試了多個c++線上編譯器、VS code和code blocks的string類首次分配空間均為15,溢位之後分配實際所需空間,簡而言之就是15+實際溢位空間大小。【個人實踐經驗,僅供參考】
#include <iostream> #include <string> using namespace std; int main() { string str0("guangdongsheng"); string str1("China.GuangDongSheng"); string str2("Universe.Earth.China.GuangDongSheng"); cout << str0 << endl; cout << str0.capacity() << endl; cout << str0.size() << endl; cout << str0.length() << endl; cout << str1 << endl; cout << str1.capacity() << endl; cout << str1.size() << endl; cout << str1.length() << endl; cout << str2.c_str() << endl; cout << str2.capacity() << endl; cout << str2.size() << endl; cout << str2.length() << endl; return 0; }
輸出結果:
guangdongsheng
15
14
14
China.GuangDongSheng
31
20
20
Universe.Earth.China.GuangDongSheng
47
35
35