【发布时间】:2013-02-10 10:23:29
【问题描述】:
如果我想在用户输入的字符串中多次插入相同的字符 例如:
int n=30;
string s="";
for(int i=0; i<n; i++) {
s=s+"M";
}
有没有更有效的方法可以在更短的时间内完成相同的流程?因为如果 n 是一个很大的数字,程序将需要很长时间才能运行
【问题讨论】:
标签: c++ string insert stdstring
如果我想在用户输入的字符串中多次插入相同的字符 例如:
int n=30;
string s="";
for(int i=0; i<n; i++) {
s=s+"M";
}
有没有更有效的方法可以在更短的时间内完成相同的流程?因为如果 n 是一个很大的数字,程序将需要很长时间才能运行
【问题讨论】:
标签: c++ string insert stdstring
根据:http://www.cplusplus.com/reference/string/string/append/ 案例 n°5:填充字符串
str.append (14, 'd');
将在你的字符串中追加 14 倍的字符 'd'
【讨论】:
不确定它是否更快,但肯定是更好的风格:
s += std::string('M', n);
【讨论】:
答案很可能是不,没有更有效的方法。大多数操作实际上在计数上是线性的。包括构造一个替代字符串,使用std::string::append 甚至std::fill 附加到它。一个可能加快速度的好方法是使用s.push_back('M') 并可能进行预留调用,但即便如此,它也不会明显更快,如果有的话。
【讨论】: