【问题标题】:When do we need to call std::string::capacity()?我们什么时候需要调用 std::string::capacity()?
【发布时间】:2016-12-11 14:01:18
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: c++ string stl use-case capacity


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是个好问题。我会说在用户代码中调用capacity() 是一种代码气味,这会冒着引发激烈战争的风险。

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

      如果您在正在处理的代码中看到此调用,请当心地雷。如果您编写此调用,则表明您的设计有问题。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-22
          • 2019-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-03
          • 2021-12-25
          • 1970-01-01
          相关资源
          最近更新 更多