📅  最后修改于: 2023-12-03 14:54:19.545000             🧑  作者: Mango
如果您需要在C++中检查两个STL向量是否包含完全相同的元素,有一些简单的方法可以帮助您完成这项任务。
使用无序集合是一种快速易用的方法,因为它可以使您更轻松地检查两个向量是否完全相同。这可以通过以下步骤来完成:
下面是一个使用无序集合来检查两个向量是否相同的示例代码:
#include <iostream>
#include <vector>
#include <unordered_set>
bool containsSameElements(std::vector<int>& v1, std::vector<int>& v2)
{
if (v1.size() != v2.size())
{
return false;
}
std::unordered_set<int> s1(v1.begin(), v1.end());
for (auto i : v2)
{
if (s1.find(i) == s1.end())
{
return false;
}
}
return true;
}
int main()
{
std::vector<int> v1 {1, 2, 3, 4};
std::vector<int> v2 {2, 1, 4, 3};
bool containsSame = containsSameElements(v1, v2);
std::cout << "v1 and v2 contain same elements? " << containsSame << std::endl;
return 0;
}
另一种方法是将两个向量都按照相同的顺序排序,并比较它们是否完全相等。这可以通过以下步骤来完成:
下面是一个使用排序来检查两个向量是否相同的示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
bool containsSameElements(std::vector<int>& v1, std::vector<int>& v2)
{
if (v1.size() != v2.size())
{
return false;
}
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
for (size_t i = 0; i < v1.size(); ++i)
{
if (v1[i] != v2[i])
{
return false;
}
}
return true;
}
int main()
{
std::vector<int> v1 {1, 2, 3, 4};
std::vector<int> v2 {2, 1, 4, 3};
bool containsSame = containsSameElements(v1, v2);
std::cout << "v1 and v2 contain same elements? " << containsSame << std::endl;
return 0;
}
以上介绍了两种常见的方法来快速检查两个STL向量是否包含相同的元素。您可以根据您的需求选择其中一种方法,从而找到一个快速可靠的解决方案。