怎么将两个list合并而不排序

时间:2022-01-30 19:34:29
例如
list<int> c1, c2;
c1.push_back(3);
c1.push_back(6);
c1.push_back(9);
c2.push_back(2);
c2.push_back(4);
c2.push_back(5);

用c2.merge(c1) 就变成了2,3,4,5,6,9
我需要的是2,4,5,3,6,9 不排序

5 个解决方案

#1


c2.splice(c2.end(), c1);

#2


merge都是合并两个有序的区间。也就是merge sort所用手法。

#3


楼上正解~!`

#4


merge函数在使用时就已经排序了,如果不排序的话,你得在你的程序排序部分稍加修改再调用那个函数才可以。

#5


Removes the elements from the argument list, inserts them into the target list, 

**and orders the new, combined set of elements in ascending order or in some other specified order.***

这是MSDN里面对list::merge的描述。
如果楼主不想排序的话要怎样排列list中的元素呢?把一个接在另一个后面?那样可以使用list::splice.
功能描述
Removes elements from the argument list and inserts them into the target list.

#1


c2.splice(c2.end(), c1);

#2


merge都是合并两个有序的区间。也就是merge sort所用手法。

#3


楼上正解~!`

#4


merge函数在使用时就已经排序了,如果不排序的话,你得在你的程序排序部分稍加修改再调用那个函数才可以。

#5


Removes the elements from the argument list, inserts them into the target list, 

**and orders the new, combined set of elements in ascending order or in some other specified order.***

这是MSDN里面对list::merge的描述。
如果楼主不想排序的话要怎样排列list中的元素呢?把一个接在另一个后面?那样可以使用list::splice.
功能描述
Removes elements from the argument list and inserts them into the target list.