清除字符串变量内容的不同方法之间有什么区别吗?
Is there any difference between the different methods of clearing the contents of a string variable?
给定一个字符串变量设置为某个值:
string s = "Hello";
以下清除内容的方法有什么区别(性能、问题)吗?:
s = ""
s = std::string()
s.clear()
我从这个关于清除变量https://stackoverflow.com/a/11617595/1228532
有一些明显的区别。
clear
设置字符串的长度为0,但不改变其容量。
s=""
或s = std::string()
创建一个全新的(空)字符串,将其值赋给现有字符串,并丢弃现有字符串的内容。特别是如果您使用的std::string
实现不包括短字符串优化,这可能比clear
慢得多。雪上加霜的是,这还意味着如果您向字符串中添加更多的数据,它最终将重新分配缓冲区,从一个很小的缓冲区开始,随着字符串的增长,它可能不得不重新分配缓冲区。
底线:clear
通常会更快,更不用说给出一个…清晰表达你的真实意图
相关文章:
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 这 4 个 lambda 表达式之间有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 不同的类或结构初始化方法之间的性能差异是什么?
- "constinit"和"constexpr"之间的真正区别是什么?
- 在什么条件下使用 std::memcpy 在对象之间复制是安全的?
- 移动语义和深层/浅层复制之间有什么关系?
- 这两种C++语法之间有什么区别?
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- ( var > x) 和 ( x < var)之间有什么区别吗?
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 超市管理系统的类别之间应该是什么关系?
- 指针和程序性能之间有什么关系吗?
- 这些初始化之间有什么区别?
- 空字符和"\0"之间有什么区别?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?