1

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」を期待していました

4

1 に答える 1

2

正しく動作しますが、悪いテストデータを選択しました。

std::inplace_mergeマージソートのように、シーケンス内の2つのソートされた連続した範囲でマージを実行します。

つまり、文字列を渡すadebcfと(パラメータが質問のように設定されていると仮定して)、文字列はにマージされabcdefます。文字列を渡すと、abcdefこの文字列はすでに順序付けられているため、結果は入力と同じになります。

于 2012-06-20T22:35:42.930 に答える