ユーザーが入力した文字列に同じ文字を何度も挿入したい場合は、たとえば次のようになります。
int n=30;
string s="";
for(int i=0; i<n; i++) {
s=s+"M";
}
同じプロセスをより短時間で効率的に行う方法はありますか? n が大きい場合、プログラムの実行に非常に長い時間がかかるためです。
によると: http://www.cplusplus.com/reference/string/string/append/ Case n°5: 文字列を埋める
str.append (14, 'd');
文字列に文字「d」の14倍を追加します
より高速かどうかはわかりませんが、スタイルが優れていることは確かです。
s += std::string('M', n);
答えはノーである可能性が高く、より効率的な方法はありません。ほとんどの操作は、実際にはカウントが線形になります。代替文字列の作成、および を使用した追加std::string::append
も含まれstd::fill
ます。ただし、速度を上げる良い方法はs.push_back('M')
、予約呼び出しを使用し、場合によってはそれを行うことですが、それでも、たとえあったとしても、著しく高速になることはありません。