为集合执行set_union时,为什么需要插入器函数调用?

时间:2009-10-09 07:37:59

标签: c++ stl

我需要像这样调用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());

为什么会这样?

1 个答案:

答案 0 :(得分:9)

a1.begin()根本不是输出迭代器。 inserter(a1,a1.begin())返回一个输出迭代器,它将为每个元素调用set的insert函数。但我甚至不确定第一个版本是否正确。迭代在插入新元素的同一组中。 (!)

因为你处理set&lt;&gt;对象已经,你为什么不写简单

a1.insert(a2.begin(),a2.end());