【发布时间】:2013-01-04 20:36:15
【问题描述】:
如果我有两组数据
set<string> A;
set<string> B;
使用 set_intersection 可以得到两个集合的交集部分的数据。
如何分别打印出集合A和集合B的非交集部分的数据?
【问题讨论】:
标签: c++ set set-intersection
如果我有两组数据
set<string> A;
set<string> B;
使用 set_intersection 可以得到两个集合的交集部分的数据。
如何分别打印出集合A和集合B的非交集部分的数据?
【问题讨论】:
标签: c++ set set-intersection
根据您的需要使用std::set_difference 或std::set_symmetric_difference。
(我太累/懒得写一个例子,但希望一旦你阅读了上面的链接,它应该是显而易见的!)
【讨论】:
set_symmetric_difference 将结果放入某个可迭代对象中。
因此,您可以将值复制到 ostream 中,方法是用 ostream_iterator 包装它:
set<string> a;
set<string> b;
set_symmetric_difference(a.begin(), a.end(),
b.begin(), b.end(),
ostream_iterator<string>(cout, "\n"));
【讨论】: