【发布时间】:2020-08-13 06:16:46
【问题描述】:
在 C++ 中,使用 + 进行字符串连接是一件坏事吗?例如下面,
string str = "";
int n = 10;
for (int i = 0; i < n; i++) {
str += i + '0';
}
这段代码 sn-p 的时间复杂度是多少?是 O(n) 吗? C++ 中的字符串 + 运算符是否像矢量的 push_back 一样,并且在末尾添加项目时,如果需要,它会自行动态增长,从而使平均时间保持不变?
更新: 还有一个问题:如果我需要将 char 附加到字符串但不知道前面的长度是多少,如果不使用 + 运算符,最好的方法是什么?我知道在 Java 中,我们有 stringbuilder,我们有类似的东西 c++ std 吗?
【问题讨论】:
-
可能是的,但不能保证:en.cppreference.com/w/cpp/string/basic_string/operator%2B%3D。您是否尝试过对代码进行基准测试?
-
怀疑是
n,也许是log n * n。许多因素都在起作用。但是对于这么小的n,不太可能看到性能差异。 -
确保第一个参数是
std::string而不是char[]或const char[]。例如str += "hello" + i + '0';将不起作用。
标签: c++