在 C++ 中合并列表
merging a list in C++
我是 STL 概念的新手,我在列表合并代码中遇到了问题。
list<int> lst1;
list<int> lst2;
lst1.push_back(5);
lst1.push_back(7);
lst1.push_back(1);
lst1.push_back(9);
lst1.push_back(12);
lst2.push_back(45);
lst2.push_back(6);
lst2.push_back(9);
代码的输出:
lst1.merge(lst2)
是 5 7 1 9 12 45 6 9
但是当我们分别对这两个列表进行排序时,我们得到
lst1.sort()
lst2.sort()
lst1.merge(lst2)
整个列表按输出排序
1 5 6 7 9 9 12 45
为什么输出不是
1 3 7 9 12 6 9 45
?
我们正在对列表进行单独排序,为什么要对最终列表进行排序?
这就是为什么您需要至少阅读 the function's documentation 的 摘要 才能猜测它的作用。第一行:
Merges two sorted lists into one. The lists should be sorted into ascending order.
该函数的全部意义在于将两个排序的输入合并为一个排序的结果。如果您违反要求,就会发生奇怪的事情(很可能它假设输入已排序并以优先考虑局部最小值的方式将它们混合在一起,产生未排序的输出,但不仅仅是背靠背节点)。
如果你只想拼接另一个list
末尾的节点,那就是splice
is for。
我是 STL 概念的新手,我在列表合并代码中遇到了问题。
list<int> lst1;
list<int> lst2;
lst1.push_back(5);
lst1.push_back(7);
lst1.push_back(1);
lst1.push_back(9);
lst1.push_back(12);
lst2.push_back(45);
lst2.push_back(6);
lst2.push_back(9);
代码的输出:
lst1.merge(lst2)
是 5 7 1 9 12 45 6 9
但是当我们分别对这两个列表进行排序时,我们得到
lst1.sort()
lst2.sort()
lst1.merge(lst2)
整个列表按输出排序 1 5 6 7 9 9 12 45
为什么输出不是 1 3 7 9 12 6 9 45 ?
我们正在对列表进行单独排序,为什么要对最终列表进行排序?
这就是为什么您需要至少阅读 the function's documentation 的 摘要 才能猜测它的作用。第一行:
Merges two sorted lists into one. The lists should be sorted into ascending order.
该函数的全部意义在于将两个排序的输入合并为一个排序的结果。如果您违反要求,就会发生奇怪的事情(很可能它假设输入已排序并以优先考虑局部最小值的方式将它们混合在一起,产生未排序的输出,但不仅仅是背靠背节点)。
如果你只想拼接另一个list
末尾的节点,那就是splice
is for。