c ++ string + =它是如何实现的?

时间:2012-11-28 03:12:16

标签: c++ string

我只是对c ++ string + =。

的实现感到好奇

对此有任何性能损失吗? 哪一个应该更快?

String a = "xxx";
a += "(" + "abcd" + ")"

String a = "xxx";
a.append("(");
a.append("abcd");
a.append(")");

3 个答案:

答案 0 :(得分:2)

鉴于它们在标准中具有逐字逐句的相同规范,很难设想一个合理的实现,其运行时成本会有所不同:

  

21.4.6 basic_string modifiers [string.modifiers]

     

21.4.6.1 basic_string::operator+= [string::op+=]

     

basic_string& operator+=(const basic_string& str);

     

1 E ff ects:致电append(str.data, str.size()).

     

2返回:*this

     

...

     

21.4.6.2 basic_string::append [string::append]

     

basic_string& append(const basic_string& str);

     

1 E ff ects:致电append(str.data(), str.size()).

     

2返回:*this.

答案 1 :(得分:0)

如果通过调用+=未实现append运算符,我会感到非常惊讶。

事实上,basic_string的{​​{3}}表示:

  

basic_string& operator+=(const basic_string& s)相当于append(s)

此外,SGI's documentation读取:

basic_string& operator+=(const basic_string& __s) { return append(__s); }

the code

答案 2 :(得分:0)

它们之间没有区别,实际上+ =运算符的实现只是调用append。 我从STL代码中读到它。