【问题标题】:Set intersection not working设置交叉点不起作用
【发布时间】:2015-03-29 20:07:14
【问题描述】:

我正在尝试使用以下代码对两个集合进行交集,如果结果与空集合不同,我想将我的第一个集合插入到一组集合中。

    std::set<int> set1,set2;
    std::set<set<int> > result;
    std::set<int> intersection;
             set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),std::back_inserter(intersection));
                if(!intersection.empty()) result.insert(set1);

但是我收到以下错误:“class std::set”没有名为“push_back”的成员。问题是什么? 提前致谢。

【问题讨论】:

  • 我做到了。我错过了什么吗?插入是集合的成员,我没有在任何地方使用 push_back。还是我没有以正确的方式使用插入?跟迭代器有关系吗?
  • @Andy: back_inserter 创建一个调用push_backback_insert_iterator

标签: c++ stl set


【解决方案1】:

std::back_inserter 使用std::back_inserter_iterator,它在容器上调用push_back()

当输出为std::set 时使用std::inserter

 std::set<int> set1,set2;
 std::set<int> intersection;
 std::set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),
                       std::inserter(intersection, intersection.begin()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多