【问题标题】:print out data in the non-intersection for set <string> A, set<string>B打印出 set <string> A, set<string>B 的非交集处的数据
【发布时间】:2013-01-04 20:36:15
【问题描述】:

如果我有两组数据

set<string> A;
set<string> B;

使用 set_intersection 可以得到两个集合的交集部分的数据。

如何分别打印出集合A和集合B的非交集部分的数据?

【问题讨论】:

    标签: c++ set set-intersection


    【解决方案1】:

    根据您的需要使用std::set_differencestd::set_symmetric_difference

    (我太累/懒得写一个例子,但希望一旦你阅读了上面的链接,它应该是显而易见的!)

    【讨论】:

    • set_difference 会给你A+B-(AB)的结果,请问A-(AB)和B-(AB)的获取方式是什么? //(AB)=intersection...这是否意味着set_symmetric_difference?
    • @user1830108:这听起来像是对 set_symmetric_difference 的描述。所以你可能想要 set_difference。
    • 问题不就是打印数据吗?
    • @PeterWood:再看一遍,是的。但我认为设置操作是棘手的部分......
    【解决方案2】:

    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"));
    

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      相关资源
      最近更新 更多