C++ 减少C+中的字符串容量+;
为什么字符串容量不根据调整大小的数字(15)进行调整C++ 减少C+中的字符串容量+;,c++,string,capacity,C++,String,Capacity,为什么字符串容量不根据调整大小的数字(15)进行调整 我是编程新手,非常感谢您的简单解释。谢谢 唯一的要求是容量至少与大小相同。如果要增加容量,请使用reserve;如果要对当前字符串大小使用尽可能最小的容量,请使用shorn\u to\u fit。请记住,如果您这样做是出于性能原因,那么可能没有必要这样做 在本例中,大小始终至少为22个字符。“请求字符串减小其容量以适应其大小。”请查看此链接上的示例代码,这正是您需要了解的内容。很可能您的编译器为分配实现了最小净空22。因此,将大小调整为15实
我是编程新手,非常感谢您的简单解释。谢谢 唯一的要求是容量至少与大小相同。如果要增加容量,请使用
reserve
;如果要对当前字符串大小使用尽可能最小的容量,请使用shorn\u to\u fit
。请记住,如果您这样做是出于性能原因,那么可能没有必要这样做
在本例中,大小始终至少为22个字符。“请求字符串减小其容量以适应其大小。”请查看此链接上的示例代码,这正是您需要了解的内容。很可能您的编译器为分配实现了最小净空22。因此,将大小调整为15实际上只允许存储15个字符,但保留原来的22个字符的容量。这意味着,在将完整内容移动到更大的分配位置之前,您可以
向后推\u
最多22次。调整大小
调整字符串的大小,它不会更改基础内存,除非您调整到超过容量。为什么您认为您的代码片段会减少容量?您是否将其与保留混为一谈了?“至少22个字符”通常不正确,并且“在本例中”依赖于实现,至少对我来说,“本例”是什么还不清楚。例如,编译器。。。也不具有约束力。要获得尽可能小的复制空间。
int main()
{
string str = "Hello";
cout << "Original: " << str.capacity() << endl;
str.resize(15);
cout << "New: " << str.capacity() << endl;
return 0;
}
Original: 22
New: 22