inplace_merge:为什么不是inplace_merge合并字符串?

时间:2012-06-20 22:26:54

标签: c++

为什么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”

1 个答案:

答案 0 :(得分:2)

它确实可以正常工作,但您选择了错误的测试数据。

std::inplace_merge在序列中的两个已排序的连续范围上进行合并,就像合并排序一样。

也就是说,如果您传递字符串adebcf(假设参数在您的问题中设置),它将合并到abcdef。 如果传递字符串abcdef,则结果与输入相同,因为此字符串已按顺序排列。