std::string::reserve()
引数として渡す正確な量のスペースを割り当てません。たとえば、100 文字のスペースを予約しようとすると、111 文字が予約されます。200 を渡すと、207 が予約されます。650 の場合は 655、1000 の場合は 1007 です。
この背後にある理由は何ですか?
プログラムコード:
std::string mystr;
std::cout << "After creation :" << mystr.capacity() << std::endl;
mystr.reserve(1000);
std::cout << "After reserve() :" << mystr.capacity() << std::endl;
mystr = "asd";
std::cout << "After assignment :" << mystr.capacity() << std::endl;
mystr.clear();
std::cout << "After clear() :" << mystr.capacity() << std::endl;
コード出力:
After creation :15
After reserve() :1007
After assignment :1007
After clear() :1007
(IDE: Visual Studio 2012)