Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 减少C+中的字符串容量+;_C++_String_Capacity - Fatal编程技术网

C++ 减少C+中的字符串容量+;

C++ 减少C+中的字符串容量+;,c++,string,capacity,C++,String,Capacity,为什么字符串容量不根据调整大小的数字(15)进行调整 我是编程新手,非常感谢您的简单解释。谢谢 唯一的要求是容量至少与大小相同。如果要增加容量,请使用reserve;如果要对当前字符串大小使用尽可能最小的容量,请使用shorn\u to\u fit。请记住,如果您这样做是出于性能原因,那么可能没有必要这样做 在本例中,大小始终至少为22个字符。“请求字符串减小其容量以适应其大小。”请查看此链接上的示例代码,这正是您需要了解的内容。很可能您的编译器为分配实现了最小净空22。因此,将大小调整为15实

为什么字符串容量不根据调整大小的数字(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