请注意,向量是有序的,std::equal
或者==
操作员检查向量是否以相同的顺序具有相同的内容。对于许多用例来说,这可能就足够了。
但是有时您可能想知道两个向量是否具有相同的内容但不一定具有相同的顺序。对于这种情况,您需要另一个功能。
下面是一个不错且简短的实现。此处建议:https ://stackoverflow.com/questions/17394149/how-to-efficiently-compare-vectors-with-c/17394298#17394298
在那里您还将找到有关您可能不想使用它的原因的讨论...
将其放入您选择的头文件中:
#include <algorithm>
template <class T>
static bool compareVectors(std::vector<T> a, std::vector<T> b)
{
if (a.size() != b.size())
{
return false;
}
::std::sort(a.begin(), a.end());
::std::sort(b.begin(), b.end());
return (a == b);
}
这里有一个说明上述理论的例子:
std::vector<int> vector1;
std::vector<int> vector2;
vector1.push_back(100);
vector1.push_back(101);
vector1.push_back(102);
vector2.push_back(102);
vector2.push_back(101);
vector2.push_back(100);
if (vector1 == vector2)
std::cout << "same" << std::endl;
else
std::cout << "not same" << std::endl;
if (std::equal(vector1.begin(), vector1.end(), vector2.begin()))
std::cout << "same" << std::endl;
else
std::cout << "not same" << std::endl;
if (compareVectors(vector1, vector2))
std::cout << "same" << std::endl;
else
std::cout << "not same" << std::endl;
输出将是:
not same
not same
same