【发布时间】:2020-09-06 09:37:01
【问题描述】:
当我遇到 unordered_set 和 set 不一致时,我正在解决 Leetcode 上的一个问题。
设两个向量为nums1 = [4,9,5] 和nums2 = [9,4,9,8,4]。我们必须找到他们的交点,所以我做了以下两件事:
1.
unordered_set<int> s1 (nums1.begin(), nums1.end());
unordered_set<int> s2 (nums2.begin(), nums2.end());
vector <int> s;
set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), back_inserter(s));
2。将unordered_set 替换为set
set<int> s1 (nums1.begin(), nums1.end());
set<int> s2 (nums2.begin(), nums2.end());
vector <int> s;
set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), back_inserter(s));
方法 1. 的结果是 [9],而方法 2. 的结果是 [9,4](这是正确的)。我是否遗漏了 C++ STL 的一些关键概念?
【问题讨论】:
-
en.cppreference.com/w/cpp/algorithm/set_intersection "构造一个从 d_first 开始的排序范围,由 排序范围 [first1, last1) 和 [first2, last2) 中的元素组成。"
标签: c++ vector set intersection unordered-set