C++ C++;无序集合和集合上集合交方法的不一致结果

C++ C++;无序集合和集合上集合交方法的不一致结果,c++,vector,set,intersection,unordered-set,C++,Vector,Set,Intersection,Unordered Set,我正在处理Leetcode上的一个问题,这时我遇到了与无序集和集不一致的情况。 设两个向量为nums1=[4,9,5]和nums2=[9,4,9,8,4]。我们必须找到他们的交叉点,所以我做了以下两件事: 一, 方法1的结果。从进近2开始时为[9]。是[9,4](这是正确的)。在第一个剪辑的第一个相交范围内,是否因为缺少原始的集合,所以我错过了C++ STL的一些关键概念吗? 构造从d_开始的排序范围,该范围首先由元素组成 在排序范围[first1,last1]和[first2, last2)。

我正在处理Leetcode上的一个问题,这时我遇到了与
无序集
不一致的情况。 设两个向量为
nums1=[4,9,5]
nums2=[9,4,9,8,4]
。我们必须找到他们的交叉点,所以我做了以下两件事:

一,


方法1的结果。从进近2开始时为
[9]
。是
[9,4]
(这是正确的)。在第一个剪辑的第一个相交范围内,是否因为缺少原始的集合

,所以我错过了C++ STL的一些关键概念吗? 构造从d_开始的排序范围,该范围首先由元素组成 在排序范围[first1,last1]和[first2, last2)。如果某个元素在[first1,last1]中被找到m次,并且n 在[first2,last2]中,第一个std::min(m,n)元素将 从第一个范围复制到目标范围

第一个排序范围是{4,9},第二个排序范围是{9}。 这两者的交叉点确实是{9}

对于
set
{4,9}和{9,4}是相等的,
set
s是排序范围。因此这两个结果对于给定的范围都是正确的。

构造一个从d_first开始的排序范围,包括在排序范围[first1,last1]和[first2,last2]中找到的元素
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));
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));