std::string::reserve()
没有分配我作为参数传递的确切空间量。例如,如果我尝试为 100 个字符保留空间,它会为 111 个字符保留空间。如果我通过 200,它会为 207 保留。655 为 650,1007 为 1000。
这背后的原因是什么?
程序代码:
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)