在通用容器中查找特定实现

时间:2016-12-02 14:56:44

标签: c++ c++11 generics

我有一个包含A-s的容器。

B,C,D,E,......实施A.

什么是效率最高的&最安全的查找方法,例如第一个C对象? (所以第一个对象,其类型为C)

我想到了unordered_map with<字符串,A>但是字符串并不是非常安全,因为它们只是在运行时检查过。

1 个答案:

答案 0 :(得分:1)

了解哪种方式更有效的唯一方法是在您的平台上测试它并测量时间,比较解决它的不同方法。

例如,我使用枚举来加速搜索和索引树。

enum objType
{
   A = 1,
   B,
   C,
   D
};

容器可能应该是:

 unordered_map < objType, A* >

但是如果您需要存储多个类型的对象,请考虑使用multimap

 unordered_multimap < objType, A* >