inplace_merge
以下のコードの文字列をマージしないのはなぜですか?
string src = "abc";
string new_str = "def";
src += new_str;
inplace_merge(src.begin(), src.begin()+3, src.end());
cout << src; // abcdef
編集:私は「adbecf」を期待していました
inplace_merge
以下のコードの文字列をマージしないのはなぜですか?
string src = "abc";
string new_str = "def";
src += new_str;
inplace_merge(src.begin(), src.begin()+3, src.end());
cout << src; // abcdef
編集:私は「adbecf」を期待していました
正しく動作しますが、悪いテストデータを選択しました。
std::inplace_merge
マージソートのように、シーケンス内の2つのソートされた連続した範囲でマージを実行します。
つまり、文字列を渡すadebcf
と(パラメータが質問のように設定されていると仮定して)、文字列はにマージされabcdef
ます。文字列を渡すと、abcdef
この文字列はすでに順序付けられているため、結果は入力と同じになります。