c++ 判断两个vector<int>型是否相等,特别的是相等不考虑排序和重复。应该用什么STL algorithms?

例如 vectors {1, 4, 9, 16, 9, 7, 4, 9, 11} and {11, 11, 7, 9, 16, 4, 1} would be considered identical. 是相等的。
2026年09月22日 05:57
有5个网友回答
网友(1):

思路: 相等的条件是A中包含B中所有元素, 且B中包含A中所有元素
比较函数: 判断是否v1中包含v2的每一个元素
bool comp(vector&v1, vector&v2)
{
for (int i=0; i {
if (find(v1.begin(), v1.end(), v2[i]) == v1.end())
return false;
}
return true;
}

判断语句:
if (comp(v1,v2) && comp(v2,v1))
cout << "相等";
else
cout << "不相等";

网友(2):

sort()进行排序,vector::iterator reend1 = unique(ivec1.begin(),ivec1.end()),vector::iterator reend2 = unique(ivec2.begin(),ivec2.end())返回指向最后一个不重复的元素的下一个位置的迭代器,然后在ivec1.begin()和reend1之间和ivec2.begin()和reend2之间进行比较,或者再调用例如:ivec1.erase(reend1,ivec.end())来返回一个没有重复元素的容器。您也可以调用stable_sort(iterator,iterator,function)版本,第三个参数是个谓能做你自定义的排序操作。

网友(3):

用equals方法不行吗,比较对象的方式?你试试,加油,有事可以联系我,没分给点鼓励

网友(4):

C++ primer 第四版340页
有个find_first_of函数的使用应该可以满足你的要求。
我也没怎么用过这个函数。你自己去找来看看吧。

网友(5):

排序后比较,或者用map不用vector