我需要帮助选择正确的c ++容器

时间:2011-05-12 21:35:36

标签: c++

键是:(x,y),表示2个整数。

值为:0或1。

我经常对此哈希映射进行迭代操作。

哪种数据结构合适?我正在使用C ++ stl或tr1。不要考虑提升。

4 个答案:

答案 0 :(得分:4)

嗯,显然存储的数据格式是一个bool。

对于密钥格式,如果您知道这些整数的比特大小并且性能是必须的,我会使用一个关联数组(在C ++中称为map),其中两倍的位宽整数作为键:< / p>

bool val = true;
uint32 x, y; // key
uint64 combo = x << 32 + y;

std::map<uint64, bool> container;

但是这样做也会很好,并且在语义上很多更好:

std::map<std::pair<int, int>, bool> container.

答案 1 :(得分:3)

map< pair< int, int >, bool > cont;

答案 2 :(得分:2)

我建议使用一个合适的hashmap(与std :: map不同,不是一个hashmap):

typedef std::tr1::unordered_map<pair<int, int>, bool> MyContainer;
MyContainer m_myContainer;

答案 3 :(得分:0)

我会使用std :: hash_map或std :: map。 我不确定哪种会给你更快的表现。