c++;字符串+;=它是如何实施的? 我只是好奇C++的Str++../P>的实现
这会有任何表现上的惩罚吗? 哪一个应该更快c++;字符串+;=它是如何实施的? 我只是好奇C++的Str++../P>的实现,c++,string,C++,String,这会有任何表现上的惩罚吗? 哪一个应该更快 String a = "xxx"; a += "(" + "abcd" + ")" 或 如果+=操作符不是通过调用append实现的,我会非常惊讶 事实上,对于basic\u字符串,表示: basic\u string和operator+=(const basic\u string&s)相当于append(s) 此外,案文如下: 它们之间没有区别,实际上+=操作符的实现只是调用append。 我是从STL代码中读到的。考虑到他们在标准中有逐字逐句的相
String a = "xxx";
a += "(" + "abcd" + ")"
或
如果
+=
操作符不是通过调用append
实现的,我会非常惊讶
事实上,对于basic\u字符串
,表示:
basic\u string和operator+=(const basic\u string&s)
相当于append(s)
此外,案文如下:
它们之间没有区别,实际上+=操作符的实现只是调用append。
我是从STL代码中读到的。考虑到他们在标准中有逐字逐句的相同规范,很难想象一个合理的实现,因为他们的运行时成本会有所不同:
21.4.6基本字符串修改器[字符串修改器]
21.4.6.1基本字符串::运算符+=[string::op+=]
basic_字符串和运算符+=(const basic_字符串和str)代码>
1效果:调用追加(str.data,str.size())。
2返回:*此
…
21.4.6.2基本\u字符串::追加[string::追加]
basic_字符串和append(const basic_字符串和str)代码>
1效果:调用append(str.data(),str.size())。
2返回:*这个。
仅供参考。请看以下内容:[C++中的高效字符串串联][1][1]:它解释得很好。@SpyrosR:它确实解释得很好,但用于不同的运算符。谢谢!实际上我的问题没有被很好地描述。。。我现在改变了它,从SpyrosR @的地址找到了答案。C++ STDLIB不是SGI接口的直接拷贝。最好用作参考,说明基本相同。
String a = "xxx";
a.append("(");
a.append("abcd");
a.append(")");
basic_string& operator+=(const basic_string& __s) { return append(__s); }