C++ STL中的unordered_set operator!=运算符
C++ STL中的unordered_set是一种用于存储唯一无序元素的容器。unordered_set类是基于哈希表实现的,因此查找元素的速度非常快。在实际编程中,我们有时需要比较两个unordered_set是否相等或不相等。本文主要介绍unordered_set中的operator!=运算符。
operator!=运算符
operator!=是C++中的一个二元运算符,用于比较两个值是否不相等。在C++ STL中,unordered_set类中也提供了operator!=运算符的重载版本。该运算符用于比较两个unordered_set对象是否不相等。其语法如下:
template < class Key, class Hash, class Pred, class Alloc >
bool operator!= ( const unordered_set<Key,Hash,Pred,Alloc>& lhs,
const unordered_set<Key,Hash,Pred,Alloc>& rhs );
该运算符将unordered_set对象lhs和rhs作为其输入参数,如果lhs中的元素与rhs中的元素不完全相同,则返回true,否则返回false。
下面是一个示例程序,演示了如何使用operator!=运算符比较两个unordered_set对象是否不相等。
#include <iostream>
#include <unordered_set>
int main()
{
std::unordered_set<int> set1 = {1, 2, 3};
std::unordered_set<int> set2 = {1, 2, 4};
std::unordered_set<int> set3 = {1, 2, 3};
if (set1 != set2) {
std::cout << "set1 != set2" << std::endl;
}
if (set1 != set3) {
std::cout << "set1 != set3" << std::endl;
}
return 0;
}
上述程序中,set1和set2不完全相同,它们的差集为{3,4},因此set1 != set2返回true。而set1和set3完全相同,因此set1 != set3返回false。
需要注意的是,operator!=运算符并不是unordered_set类的成员函数,而是一个全局函数。因此,在使用时需要使用unodered_set类的命名空间std,如下所示:
if (std::operator!=(set1, set2)) {
std::cout << "set1 != set2" << std::endl;
}
结论
C++ STL中的unordered_set operator!=运算符用于比较两个unordered_set对象是否不相等。其语法为:
template < class Key, class Hash, class Pred, class Alloc >
bool operator!= ( const unordered_set<Key,Hash,Pred,Alloc>& lhs,
const unordered_set<Key,Hash,Pred,Alloc>& rhs );
需要注意的是,operator!=运算符并不是unordered_set类的成员函数,而是一个全局函数。在使用时需要使用unodered_set类的命名空间std。