从第一组元素中删除第二组包含的元素而不进行迭代

Dam*_*mir 2 c++ stl

我有两套(我不能用c ++ 11)

std::set<std::pair<int,int> > first;
std::set<std::pair<int,int> > second;
Run Code Online (Sandbox Code Playgroud)

我需要从第一组中删除第二组中的所有元素(如果首先包含要从第二组删除的元素).我可以通过迭代第二个集来完成这个,如果第一个元素首先包含相同的元素擦除,但我想知道有没有办法在没有迭代的情况下做到这一点?

Arm*_*yan 7

如果我理解正确,基本上你想要计算第一和第二的差异.有一个<algorithm>功能.

std::set<std::pair<int, int>> result;
std::set_difference(first.begin(), first.end(), second.begin(), second.end(), inserter(result, result.end()));
Run Code Online (Sandbox Code Playgroud)