C++ 中 set_intersection 的复杂度是多少?

发布于 2025-01-04 23:49:09 字数 282 浏览 0 评论 0原文

以下代码的复杂度是多少?

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

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

我知道将排序范围插入到集合中是线性的;但是使用插入器插入也是线性的吗?

What is the complexity of the following code?

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

where S1 and S2 are some non_empty sets and ans is an empty set.

I know that inserting a sorted range into a set is linear; but is inserting using inserter linear too?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零崎曲识 2025-01-11 23:49:09

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

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

The inserter remembers where it last inserted each item and tries to insert the next item at the same place. This is O(1) if it's the right place.

Which means copying a sorted range to the inserter is linear overall, so you're good here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文