我是一个学习字符串的初学者。
#include<iostream>
#include<string>
using namespace std;
int main(){
string st1, st2;
st1.clear();
..我在几个示例中看到了在字符串声明后使用clear()。有必要吗?这是否提供了任何好处,或者仅仅是一个好的实践,在声明之后字符串不是缺省为null吗?谢谢。
发布于 2021-02-21 20:16:14
默认构造的字符串具有zero size and unspecified capacity,因此从语义上讲,调用clear()没有意义。字符串为空,不能再为空。
但是,it is not guaranteed clear()不会更改字符串的容量,因此在对空字符串调用clear()时,某些实现可能会释放一些内存。cppreference声称“现有的实现不会改变容量”,因此即使是这种调用clear()的理由也可能是无效的。
简而言之,不要效仿这些糟糕的例子。
发布于 2021-02-21 20:12:44
这是不必要的。std::string默认构造函数将对象初始化为空字符串。clear清空现有字符串。这在默认构造的空字符串上是无意义的。这只是浪费时间(如果编译器没有优化调用)。
https://stackoverflow.com/questions/66302151
复制相似问题