gpt4 book ai didi

c++ - 清除字符串变量内容的不同方法之间有什么区别吗?

转载 作者:可可西里 更新时间:2023-11-01 16:37:27 32 4
gpt4 key购买 nike

给定一个字符串变量设置为某个值:

string s = "你好";

以下清除内容的方法之间是否有任何区别(性能、陷阱)?:

s = ""

s = std::string()

s.clear()

我从这个关于清除变量的问题的答案中得到了示例代码 https://stackoverflow.com/a/11617595/1228532

最佳答案

有一些明显的差异。

clear 将字符串的长度设置为 0,但不会改变其容量。

s=""s = std::string() 创建一个全新的(空)字符串,将其值分配给现有字符串,然后丢弃现有字符串的内容。特别是如果您使用的是不包括短字符串优化的 std::string 实现,这可能比 clear 慢得多。雪上加霜的是,这还意味着,如果您向字符串添加更多数据,它最终会从一个很小的缓冲区开始重新分配缓冲区,随着字符串的增长,它可能不得不重新分配。

底线:清晰通常会更快,更不用说给出...清晰表达您的真实意图。

关于c++ - 清除字符串变量内容的不同方法之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33065940/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com