c ++ STL设置差异

Ste*_*eve 63 c++ stl set stdset set-difference

C++ STL集数据结构是否具有设置差异运算符?

Pie*_*BdR 127

是的,它在,<algorithm>并且被称为:std::set_difference.用法是:

#include <algorithm>
#include <set>
#include <iterator>
// ...
std::set<int> s1, s2;
// Fill in s1 and s2 with values
std::set<int> result;
std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(),
    std::inserter(result, result.end()));
Run Code Online (Sandbox Code Playgroud)

最后,该集result将包含s1-s2.

  • 顺便说一句,如果你在非关联容器类上使用set_difference,比如说一个向量,请确保两个容器中的元素先排序...... (42认同)
  • #include <算法> - >没有这样的文件,应该是<algorithm>吗? (4认同)
  • 文档说“set_difference”需要对两个容器进行排序。set 真的排序了吗?这并不明显。 (3认同)

Mr *_*ooz 11

是的,算法标题中有一个set_difference函数.

编辑:

仅供参考,设置数据结构能够有效地使用该算法,如其文档中所述.该算法不仅可以在集合上工作,还可以在排序集合上的任何迭代器对上工作.

正如其他人所提到的,这是一种外部算法,而不是一种方法.据推测,这对您的应用程序来说很好.


str*_*kli 5

再次,加强救援:

#include <string>
#include <set>
#include <boost/range/algorithm/set_algorithm.hpp>

std::set<std::string> set0, set1, setDifference;
boost::set_difference(set0, set1, std::inserter(setDifference, setDifference.begin());
Run Code Online (Sandbox Code Playgroud)

setDifference 将包含 set0-set1。