问题:
假设希望每次读取一个字符写入一个string中,且已知最少读取100个字符,考虑应该如何提高程序的性能?
答:
一下代码执行结果揭示了string 内存分配策略,string 的内存分配和vector一样, 默认情况下capacity 都是以2的n 次方增长的, 详细内容见前面的一篇“vector的自增长及顺序容器的选择”
void printSizeInfo(string & s)
{
cout<<"size: "<<s.size()<<endl;
cout<<"capacity: "<<s.capacity()<<endl;
cout<<"maxsize: "<<s.max_size()<<endl;
cout<<endl;
}
int main(int argc, char* argv[])
{
string s;
printSizeInfo(s);
for(string::size_type i = 0 ; i< 50 ; ++i)
{
s.push_back(i);
printSizeInfo(s);
}
return 0;
}