zoukankan      html  css  js  c++  java
  • set, unordered_set模板类

    template<
        class Key,
        class Hash = std::hash<Key>,
        class KeyEqual = std::equal_to<Key>,
        class Allocator = std::allocator<Key>
    > class unordered_set;
    抽时间实现上述哈希表的简易模板。
    =======================================================================================================================

    std::unordered_set<std::pair<int, int>> S;

    以上的声明是无法通过编译的。unordered_set的模板类声明如下。一般情况下,我们只需声明Key即可, Hash, KetEqual等会自动推导出来。

    template<
        class Key,
        class Hash = std::hash<Key>,
        class KeyEqual = std::equal_to<Key>,
        class Allocator = std::allocator<Key>
    > class unordered_set;

    很遗憾的是,标准库中并没有实现std::hash<std::pair<class T1, classT2>>. 可参考网页链接Hash模板

    我们需要手动实现std::hash<std::pair<class T1, classT2>>., 而KeyEqual与Allocator无需手动实现。

    unordered_set/unordered_map会保证容器内任意两元素x, y, equal_to(x, y)为false.

    而set模板类声明如下。

    template<
        class Key,
        class Compare = std::less<Key>,
        class Allocator = std::allocator<Key>
    > class set;

    set/map会保证容器内任意两元素x, y, std::less<Key>(x, y), std::less<Key>(y, x)一个为True,一个为False。

    namespace std {
        template<typename T1, typename T2>
        struct hash<std::pair<T1, T2>> {
            std::size_t operator() (const std::pair<T1, T2> &a) const {
                return 0;
            }
        };
        
        template<typename T1, typename T2>
        struct equal_to<std::pair<T1, T2>> {
            bool operator()( const std::pair<T1, T2>& lhs, const std::pair<T1, T2>& rhs ) const {
                return 0;
            }
        };
        
        template<typename T1, typename T2>
        struct less<std::pair<T1, T2>> {
            bool operator()( const std::pair<T1, T2>& lhs, const std::pair<T1, T2>& rhs ) const {
                return 0;
            }
        };
    };
  • 相关阅读:
    -lpopt is not found while cross compiling for aarch64
    设置进程的cpu亲和性
    在ARM64位开发板上兼容ARM32位的可执行程序
    ARM开发板上查看动态库或者可执行程序的依赖关系
    交叉编译tmux
    使用PSCI机制的SMP启动分析
    将qemu使用的设备树dump出来
    故障review的一些总结
    理解Compressed Sparse Column Format (CSC)
    统计分析工程的依赖项
  • 原文地址:https://www.cnblogs.com/dirge/p/9515323.html
Copyright © 2011-2022 走看看