Linux 拨号vps windows公众号手机端

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

lewis 9年前 (2017-01-11) 阅读数 10 #程序编程
文章标签 c++

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

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

#include <iostream>
#include <unordered_set>

struct MyPair {
    int x;
    int y;
};

struct MyPairHash {
    size_t operator()(const MyPair& pair) const {
        return std::hash<int>()(pair.x) ^ std::hash<int>()(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<MyPair, MyPairHash, MyPairEqual> 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是自定义的结构体,包含两个整数类型的成员变量xyMyPairHash是自定义的哈希函数,用于计算MyPair类型的哈希值。MyPairEqual是自定义的相等比较函数,用于判断MyPair类型的元素是否相等。

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

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

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

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门