我们何时需要致电STD :: String :: latcation()

When do we need to call std::string::capacity()?

本文关键字:String latcation STD 何时需 我们      更新时间:2023-10-16

作为用户,我有std :: string的size()/resize()/储备()/储备()来了解和管理所有这些字符串的内存。

但是,我什么时候必须使用容量()?是否有任何用例或必要性,我应该称此功能做点什么才能实现某些目标?

谢谢!

如果您出于某种原因想要避免分配内存。例如,在实时应用程序的非常关键部分中。

这是一个很好的问题。我将通过说capacity()在用户代码中的呼叫是一种代码气味来冒犯火焰战争的风险。

唯一的原因是避免内存分配中间操作。在这种情况下,更清洁,更容易忍受的策略将是创建自己的班级(例如limited_length_string)。可能的实现可能会提前分配足够的内存(通过其自己的实现或封装std::string并在其上调用reserve()

如果您在正在处理的代码中看到此调用,请注意地雷。如果您打电话,这是您的设计可疑的信号。

容量告诉您当前字符串可以存储的最大字符数量而不会增长尺寸。因此,如果您不希望字符串大小并占用更多内存。

,您将使用它。