我需要像这样调用STL的set_union函数:
set<int> a1, a2;
set_union(a1.begin(), a1.end(), a2.begin(), a2.end(), inserter(a1, a1.begin());
而不是
set_union(a1.begin(), a1.end(), a2.begin(), a2.end(), a1.begin());
为什么会这样?
答案 0 :(得分:9)
a1.begin()根本不是输出迭代器。 inserter(a1,a1.begin())返回一个输出迭代器,它将为每个元素调用set的insert函数。但我甚至不确定第一个版本是否正确。迭代在插入新元素的同一组中。 (!)
因为你处理set&lt;&gt;对象已经,你为什么不写简单
a1.insert(a2.begin(),a2.end());