C++ STL 中 unordered_set == 运算符

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容器的比较可以使用运算符,比较的是两个容器是否具有相同的元素集合。如果两个容器的元素集合相同,则它们相等;否则它们不相等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程