[模板][数据结构] 下标池 IdPool
Templates 数据结构
Lastmod: 2021-09-05 周日 22:45:45

下标池 IdPool

template<typename T>
struct IdPool {
    map<T, int> idmap;
    vector<T> items;
    void clear() { idmap.clear(); items.clear(); }
    int getid(const T &t) {
        auto it = idmap.find(t);
        if (it != idmap.end()) return it->second;
        int ans = items.size(); items.push_back(t); idmap[t] = ans; return ans;
    }
    T& operator[](int i) { return items[i]; }
    int size() { return items.size(); }
};
IdPool<int> idp;
Prev: 《C++ Primer》 拾遗 第 13 章 拷贝控制
Next: 《C++ Primer》 拾遗 第 14 章 重载运算与类型转换