C ++中set_intersection的复杂性是什么?

时间:2012-02-10 07:29:28

标签: c++ algorithm set time-complexity set-intersection

以下代码的复杂性是什么?

set<int> S1, S2, ans;
set_intersection(S1.begin(), S1.end(), S2.begin(), S2.end(), inserter(ans, ans.begin()))

其中S1S2是一些非空集,ans是空集。

我知道将一个排序范围插入一个集合是线性的;但是也使用插入线性插入?

1 个答案:

答案 0 :(得分:7)

插入器会记住上次插入每个项目的位置,并尝试在同一位置插入下一个项目。这是O(1),如果它是正确的地方。

这意味着将排序范围复制到插入器是整体线性的,所以你在这里很好。