-2
A
回答
1
没有编译器优化,是的。 x +“qwe”是一个表达式,可以在任何地方使用,而不仅仅在x的赋值的右侧,所以它将创建一个长度为6的新std :: string对象。在第二步中,x被分配这个新的std :: string对象的值,并且新的字符串对象被丢弃。启用优化的智能编译器可能足够聪明,可以首先消除临时对象的创建,但当然不能保证。
如果要执行这个,你可以代替写:
x += "qwe";
防止任何临时对象的创建。如果新大小超过其容量,字符串对象可能需要分配内存。你可以通过查看x.capacity()来检查它,如果你关心实时性,你可以使用x.reserve()预先保留内存。
相关问题
- 1. C#String.PadRight性能与连接字符串+ pad字符的子字符串
- 2. python字符串连接性能
- 3. 字符串连接性能差异
- 4. 字符串连接vs字符串生成器。性能
- 5. 在C#中使用字符串连接的字符串连接
- 6. 连接字符串C#
- 7. C#Oracle连接字符串
- 8. MySQL连接字符串C#
- 9. 当不能连接到第一个连接字符串时,C#更改为不同的连接字符串
- 10. C/C++中的连接字符串
- 11. C++和字符串连接分隔符
- 12. 解析连接字符串的属性
- 13. 连接字符串
- 14. 连接字符串
- 15. 字符串连接
- 16. 连接字符串
- 17. 连接字符串?
- 18. 连接字符串
- 19. 连接字符串
- 20. 字符串连接
- 21. 连接字符串
- 22. 连接字符串
- 23. 连接字符串
- 24. 连接字符串
- 25. C++中的字符串连接
- 26. C中的字符串连接问题
- 27. c snprintf用于连接字符串
- 28. 做字符串连接快于C#
- 29. c#sql连接字符串变量?
- 30. C++字符串连接解决方案
[C++中有效的字符串连接]可能的重复(http://stackoverflow.com/questions/611263/efficient-string-concatenation-in-c) –
它与'x.operator =(x.operator + ( “QWE”));'。 –