用c++合并两个列表
Merge two lists c++
我想合并两个列表,以便在合并的队列中只存在一个公共元素条目。
std::list<int> list1 = { 5,9,0,1,3,4 };
std::list<int> list2 = { 8,7,2,6,4 };
list1.sort();
list2.sort();
std::cout << "list1: " << list1 << "n";
std::cout << "list2: " << list2 << "n";
list1.merge(list2);
std::cout << "merged: " << list1 << "n";
输出看起来像:
list1: 0 1 3 4 5 9
list2: 2 4 6 7 8
merged: 0 1 2 3 4 4 5 6 7 8 9
我希望输出看起来像:
list1: 0 1 3 4 5 9
list2: 2 4 6 7 8
merged: 0 1 2 3 4 5 6 7 8 9
list1.sort();
list1.unique();
由于您的列表已排序,请致电unique
list1.unique();
您的完整代码:
std::list<int> list1 = { 5,9,0,1,3,4 };
std::list<int> list2 = { 8,7,2,6,4 };
list1.sort();
list2.sort();
std::cout << "list1: " << list1 << "n";
std::cout << "list2: " << list2 << "n";
list1.merge(list2);
list1.unique();
std::cout << "merged: " << list1 << "n";
我不喜欢大代码:
std::list<int> list1 = { 5,9,0,1,3,4 };
std::list<int> list2 = { 8,7,2,6,4 };
list1.splice(list1.end(), list2);
list1.sort();
list1.unique();
CCD_ 2现在包含来自原始list1
和list2
的每个元素的一个副本。第一步将list2
的内容转换为list1
。第二步对元素进行排序。最后一步抛出重复项。单独对列表进行排序并在以后进行合并几乎没有什么好处。
否则,您可以使用std::set
来维护唯一数据的集合。以下是我如何修改您的代码:
std::list<int> list1 = { 5,9,0,1,3,4 };
std::list<int> list2 = { 8,7,2,6,4 };
std::set<int> unq(list1.begin(),list1.end()); //initialize with list 1
unq.insert(list2.begin(),list2.end()); //now insert list 2 completely
//Print new data
for(std::set<int>::iterator it=unq.begin();it!=unq.end();it++)
cout<<*it<<" ";
相关文章:
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 我如何创建一个列表,然后从中创建两个列表,其中一个用于偶数,另一个用于奇数?
- 如何在两个列表中比较和获取非包含值
- 将两个列表合并为一个蛇形列表
- 使用特征查找两个列表之间的差异
- c 中的两个列表在o(1)复杂性中
- 关于合并两个列表的算法的一些问题
- 特殊使用功能 - 两个列表的产品
- 如何获取两个列表的公共元素并将其存储在新列表中而不会重复
- 使用两个列表中的组合生成函数调用
- (C++)如何创建一个函数来接收两个排序的链表并返回出现在两个列表中的第三个元素列表
- 从两个列表中随机配对
- 在有限边界下有效地合并两个列表
- 用c++合并两个列表
- 用merge在C++中合并两个列表
- 核对两个列表
- 读取Txt文件,逐行,在两个列表中存储多个类型,如果存在的话
- 在两个列表中匹配元素算法
- 比较两个列表并查找缺失元素的有效方法
- 如何在C++中应用两个列表之间的交集