C++ 工具类 —— 词条类(Entry)
阅读原文时间:2023年09月22日阅读:3

Entry 以键值对(key-value pair)的形式定义。

template <typename K, typename V>
struct Entry{
    K key; V value;
    Entry(K k = K(), V v = V()) :key(k), value(v){}
    Entry(const Entry<K, V>& e) :key(e.key), value(e.value){}
    bool operator<(const Entry<K, V>& e) { return key < e.key; }
    bool operator>(const Entry<K, V>& e) { return key > e.key;  }
    bool operator==(const Entry<K, V>& e) { return key == e.key;  }
    bool operator!=(const Entry<K, V>& e) { return key != e.key; }
};

这样的重载了基本简单运算符重载的键值对(key-value pair)词条类有什么意义呢,就是有些特定问题下用到的特殊数据结构内部存储的未必是基本数据类型(比如 int、float 等可比较数据类型),而也可能存储的是一些较为复杂的键值对、结构体或者其他自定义的类。当存储在优先队列(大/小顶堆)或者二叉搜索树等数据结构时,需要这些复杂的元素支持比较特定的比较运算符。