typedef boost::unordered_map<int, void*> OneDimentionalNodes;
typedef boost::unordered_map<int, OneDimentionalNodes> TwoDimentionalNodes;
TwoDimentionalNodes nodes;
这个有效吗?二维无序图
我不使用任何散列函数,因为unordered_maps'的键是单个整数。它会编译,但是当我像这样迭代它时,它试图访问this-> hash_function()(k)时崩溃。
for (TwoDimentionalNodes::iterator it= nodes.begin(); it != nodes.end() ; ++it)
{
for(OneDimentionalNodes::iterator it2 = nodes[it->first].begin(); it2 != nodes[it->first].end() ; ++it2)
{
// do stuff
}
}
我也开放给其他容器用
- O(1)访问
- O(n)的迭代
- 稀疏
Dimen * s *离子。另外,为什么不去'it2-> second.begin()'? – Puppy 2012-04-20 11:09:02
我也试过了2 - > second.begin()。这是相同的结果。 – mikbal 2012-04-20 11:10:41
您可以通过包含来使用std :: unordered_map,它带有C++ 11,但与boost :: unordered_map相同。向我们展示你的'this-> hash_function()(k);'代码 –
k06a
2012-04-20 11:11:00