C++ STL 中 unordered_set ==
运算符
在C++ STL中,unordered_set是一种基于哈希表的容器,可以用来存储一组不重复的元素。它的使用方法类似于set,但是它使用哈希表来实现,因此查找元素的效率更高。在使用unordered_set时,经常需要对其进行比较,本文将介绍如何使用==
运算符来比较两个unordered_set容器。
1. unordered_set的定义和初始化
首先让我们回顾一下unordered_set容器的定义和初始化方式。unordered_set是位于std命名空间中的,因此在使用它时,需要使用using namespace std;或使用std::unordered_set来选择命名空间。下面是一个定义和初始化unordered_set容器的例子:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset = {1, 2, 3, 4, 5};
for(int i : myset)
cout << i << " ";
return 0;
}
这段代码定义了一个名为myset的unordered_set容器,其中包含了五个整数元素。最后通过for-each循环遍历myset容器中的所有元素,并输出到标准输出中。输出结果为:1 2 3 4 5。
2. unordered_set的比较
unordered_set容器的比较是在和!=运算符中完成的。它们比较的是两个unordered_set容器是否具有相同的元素集合。下面是一个比较unordered_set容器的例子:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset1 = {1, 2, 3, 4, 5};
unordered_set<int> myset2 = {5, 4, 3, 2, 1};
if(myset1 == myset2)
cout << "myset1 == myset2" << endl;
else
cout << "myset1 != myset2" << endl;
return 0;
}
这段代码定义了两个unordered_set容器,myset1和myset2。虽然它们分别包含了相同的元素,但是它们的元素的排列顺序不同。通过比较myset1和myset2,我们得到输出结果:myset1 myset2。这是因为unordered_set容器的比较操作并不考虑元素的排列顺序。
下面是一个比较unordered_set容器的例子:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset1 = {1, 2, 3, 4, 5};
unordered_set<int> myset2 = {1, 2, 3, 4, 6};
if(myset1 == myset2)
cout << "myset1 == myset2" << endl;
else
cout << "myset1 != myset2" << endl;
return 0;
}
这段代码同样定义了两个unordered_set容器,myset1和myset2。它们分别包含了相同的前四个元素,但是myset2中有一个与myset1不同的元素6。通过比较myset1和myset2,我们得到输出结果:myset1 != myset2。这是因为unordered_set容器的比较操作考虑元素的值是否相同。
下面是一个比较unordered_set容器的例子:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset1 = {1, 2, 3, 4, 5};
unordered_set<int> myset2 = {1, 2, 3, 4};
if(myset1 == myset2)
cout << "myset1 == myset2" << endl;
else
cout << "myset1 != myset2" << endl;
return 0;
}
这段代码同样定义了两个unordered_set容器,myset1和myset2。虽然它们都包含了前四个元素,但是myset1中还有一个额外的元素5,而myset2中没有。通过比较myset1和myset2,我们得到输出结果:myset1 != myset2。
3. 总结
在C++ STL中,使用和!=运算符比较unordered_set容器时,它们比较的是两个容器是否具有相同的元素集合,而不考虑元素的排列顺序。如果两个容器的元素集合相同,则它们相等;否则它们不相等。下面是一个完整的unordered_set比较的例子:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset1 = {1, 2, 3, 4, 5};
unordered_set<int> myset2 = {5, 4, 3, 2, 1};
unordered_set<int> myset3 = {1, 2, 3, 4};
unordered_set<int> myset4 = {1, 2, 3, 4, 6};
if(myset1 == myset2)
cout << "myset1 == myset2" << endl;
else
cout << "myset1 != myset2" << endl;
if(myset1 == myset3)
cout << "myset1 == myset3" << endl;
else
cout << "myset1 != myset3" << endl;
if(myset1 == myset4)
cout << "myset1 == myset4" << endl;
else
cout << "myset1 != myset4" << endl;
return 0;
}
输出结果为:
myset1 myset2
myset1 != myset3
myset1 != myset4
结论
unordered_set容器的比较可以使用运算符,比较的是两个容器是否具有相同的元素集合。如果两个容器的元素集合相同,则它们相等;否则它们不相等。