首页 > 解决方案 > 计算两个集合之间的交集时出现 set_intersection 错误

问题描述

std::set<int> m{1,2, 4};
std::set<int> n{2,3, 4};
std::set<int> mn;
std::set<int>::iterator it;
it=set_intersection(m.begin(), m.end(),
                    n.begin(), n, end()
                    mn.begin());   //This part is not correct
for(int i : mn) cout<< i <<" ";

似乎使用的最后一个参数set_intersection不正确。我尝试了inserteror back_inserter,但都没有成功。

标签: c++stl

解决方案


std::set_intersection(m.begin(), m.end(),
                      n.begin(), n.end(),
                      std::inserter(mn, mn.begin()));

请注意,您不能将结果分配给 astd::set<int>::iterator因为返回类型实际上是 a insert_iterator


推荐阅读