C++ 我们什么时候需要调用std::string::capacity()?
作为用户,我有std::string的size()/resize()/reserve()来了解和管理所有这些字符串的内存 但是,我什么时候必须使用容量()?是否有任何用例或必要,我应该调用此函数来做一些事情来实现某些事情C++ 我们什么时候需要调用std::string::capacity()?,c++,string,stl,use-case,capacity,C++,String,Stl,Use Case,Capacity,作为用户,我有std::string的size()/resize()/reserve()来了解和管理所有这些字符串的内存 但是,我什么时候必须使用容量()?是否有任何用例或必要,我应该调用此函数来做一些事情来实现某些事情 谢谢 如果出于某种原因希望避免分配内存。例如,在实时应用程序的性能非常关键的部分。如果出于某种原因希望避免分配内存。例如,在实时应用程序的性能非常关键的部分。容量告诉您当前字符串可以存储的最大字符数,而不会增加大小。因此,如果您不希望字符串的大小增加并占用更多内存,您可以使用它
谢谢 如果出于某种原因希望避免分配内存。例如,在实时应用程序的性能非常关键的部分。如果出于某种原因希望避免分配内存。例如,在实时应用程序的性能非常关键的部分。容量告诉您当前字符串可以存储的最大字符数,而不会增加大小。因此,如果您不希望字符串的大小增加并占用更多内存,您可以使用它。容量告诉您当前字符串在不增加大小的情况下可以存储的最大字符数。因此,如果您不希望字符串变大并占用更多内存,可以使用它。这是一个好问题。我要冒着火战的风险说,在用户代码中调用
capacity()
是一种代码气味
调用它的唯一原因是为了避免内存分配中间操作。在这种情况下,一种更干净、更容错的策略是创建自己的类(比如limited\u length\u string
)。一个可能的实现可以预先分配足够的内存(通过它自己的实现,或者通过封装std::string
并对其调用reserve()
)
如果您在正在处理的代码中看到此调用,请小心地雷。如果您编写此调用,则表明您的设计可疑。这是一个好问题。我将冒着一场激烈战争的风险,因为在用户代码中调用
capacity()
是一种代码气味
调用它的唯一原因是为了避免中间操作的内存分配。在这种情况下,更干净、更容错的策略是创建自己的类(比如有限长度的字符串
)。可能的实现可能会预先分配足够的内存(可以通过它自己的实现,也可以通过封装std::string
并对其调用reserve()
)
如果您在正在处理的代码中看到此调用,请小心地雷。如果您编写此调用,则表明您的设计可疑