1. 程式人生 > >淺學C++ STL--string容器程式碼筆記

淺學C++ STL--string容器程式碼筆記

 capacity()

 string類capacity()容器的大小會因編譯器的不同而得到的容量大小有所不同;

VS2017中string類首次分配空間為15,溢位之後分配為+16,之後每溢位16就+16,簡而言之規律就是:15+16+16+16+\infty

VC++6.0中string類首次分配空間為31,溢位之後分配為+32,之後每溢位32就+32,簡而言之規律就是:31+32+32+32+\infty

還有測試了多個c++線上編譯器VS codecode 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