比较列表并给我列表 a 中没有的列表 b 中的内容

Compare lists and give me what isn't in list a that is in list b

本文关键字:列表 比较      更新时间:2023-10-16

我有两个列表。让我们把它们称为A和B。有没有一个巧妙的stl技巧可以看看列表B有什么,而列表A没有,而我自己不用迭代器手动循环它们,自己比较元素?

std::set_difference

两个集合的差异是由第一个集合中存在的元素形成的,而不是第二个集合中的元素。函数复制的元素总是以相同的顺序来自第一个范围。

请注意,这两个列表必须进行排序。

下面是一个示例,显示了使用示例:

#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
int main()
{
   list<int> a {1,2,3,4,5,10};
   list<int> b {4,5,6,7,11};
   list<int> out;
   set_difference(b.begin(), b.end(), a.begin(), a.end(), back_inserter(out));
   cout << "out size is " << out.size() << endl;
   for(auto i: out)
   {
      cout << i << endl;
   }
}

您可以使用set_difference算法set-difference描述

这里是一个c++示例cppreference