c++中unordered_set怎么保存两个变量

avatar
作者
筋斗云
阅读量:7

C++中的`unordered_set`是一个无序的集合容器,用于存储唯一的元素。它存储的元素类型可以是任意自定义类型,包括保存两个变量的情况。

要保存两个变量,可以使用自定义结构体或类作为`unordered_set`的元素类型。下面是一个使用自定义结构体的示例:

```cpp

#include

#include

struct MyPair {

int x;

int y;

};

struct MyPairHash {

size_t operator()(const MyPair& pair) const {

return std::hash()(pair.x) ^ std::hash()(pair.y);

}

};

struct MyPairEqual {

bool operator()(const MyPair& lhs, const MyPair& rhs) const {

return lhs.x == rhs.x && lhs.y == rhs.y;

}

};

int main() {

std::unordered_set mySet;

mySet.insert({1, 2});

mySet.insert({3, 4});

mySet.insert({1, 2}); // 重复的元素不会被插入

for (const auto& pair : mySet) {

std::cout << pair.x << ", " << pair.y << std::endl;

}

return 0;

}

```

在上面的示例中,`MyPair`是自定义的结构体,包含两个整数类型的成员变量`x`和`y`。`MyPairHash`是自定义的哈希函数,用于计算`MyPair`类型的哈希值。`MyPairEqual`是自定义的相等比较函数,用于判断`MyPair`类型的元素是否相等。

在`main`函数中,创建了一个`unordered_set`对象`mySet`,并使用`insert`函数插入了几个`MyPair`类型的元素。注意,重复的元素不会被插入,因为`unordered_set`中的元素是唯一的。

最后,使用范围`for`循环遍历`mySet`,并输出每个`MyPair`类型元素的成员变量`x`和`y`的值。

你可以根据自己的需求自定义`MyPair`结构体的成员变量和哈希函数、相等比较函数。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!