【发布时间】:2019-11-29 14:55:27
【问题描述】:
当我使用fans = fans + s[i] 时,我的一个程序超过了时间限制,而当我使用fans += s[i] 时,它正在被接受...为什么会发生这种情况?
为了解释更多,fans是一个字符串,s也是一个字符串,所以在迭代字符串时,si只需要s的一些字符,所以我正在创建一个新的字符串fans.现在有两种方法可以将字符添加到我的新字符串中粉丝。问题在下面提到
fans = fans + s[i]; // gives Time limit exceeded
fans += s[i]; // runs successfully
【问题讨论】:
-
一个做临时的,另一个不做。 move-assignment 可以让前者更有效率,但不能比后者更好。
-
请提取并提供minimal reproducible example,如果没有它,您的问题将是题外话。作为新用户,也可以使用tour 并阅读How to Ask。
-
所以
fans是一个std::string 而s[i]是一个字符?还是另一个包含单个字符的字符串? -
@Naman 你读过 Ulrich Eckhardt 的评论吗?至少你应该澄清
fans和s[i]是什么类型,但实际上如果你edited 你的问题并添加一个我们可以复制和编译的完整程序(minimal reproducible example)会更好。只需检查您获得的链接。这不会花很长时间,它会显着改善你的问题。谢谢! -
您不应该粘贴您正在处理的程序的代码。您应该从该代码中提取minimal reproducible example 并发布。应该可以在不更改的情况下获取并编译它。它不应包含证明问题所不需要的任何内容。你的问题仍然缺乏,所以它仍然是题外话。
标签: c++ performance stdstring compound-assignment