我们什么时候需要调用 std::string::capacity()?

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

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

但是,我什么时候必须使用 capacity()?是否有任何用例或必要性我应该调用此函数来做某事以实现某事?

谢谢!

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

容量告诉您当前字符串在不增加大小的情况下可以存储的最大字符数。因此,如果您不希望字符串变大并占用更多内存,就可以使用它。

这是个好问题。我要 运行 冒着火焰的风险 war 说在用户代码中调用 capacity() 是一种代码味道。

调用它的唯一原因是避免在操作中进行内存分配。在这种情况下,更简洁、更容错的策略是创建自己的 class(比如 limited_length_string)。一个可能的实现可能会预先分配足够的内存(通过它自己的实现或通过封装 std::string 并在其上调用 reserve()

如果您在正在处理的代码中看到此调用,那么war就是地雷了。如果您编写此调用,则表示您的设计有问题。