0
我试图做到以下几点:你如何创建地图的地图?
.h
map<int, map<int,int> > forwardingTable;
.cpp
int
UpdateForwardingTable(int dest, int hop, int cost)
{
if(forwardingTable.at(dest) != forwardingTable.end())
forwardingTable.at(dest) = make_pair(hop, cost);
else
forwardingTable.insert(dest, make_pair(hop, cost));
}
,但我得到一百万编译器错误,类似于:
In file included from /usr/include/c++/4.8/map:60:0,
from globals.h:25,
from rtngnode.h:2,
from rtngnode.cpp:1:
/usr/include/c++/4.8/bits/stl_tree.h:316:5: note: template<class _Val> bool std::operator!=(const std::_Rb_tree_iterator<_Tp>&, const std::_Rb_tree_const_iterator<_Val>&)
operator!=(const _Rb_tree_iterator<_Val>& __x,
^
/usr/include/c++/4.8/bits/stl_tree.h:316:5: note: template argument deduction/substitution failed:
rtngnode.cpp:205:53: note: ‘std::map<int, std::map<int, int, std::less<int> > >::mapped_type {aka std::map<int, int, std::less<int> >}’ is not derived from ‘const std::_Rb_tree_iterator<_Tp>’
if(forwardingTable.at(dest) != forwardingTable.end())
难道我做错了什么?这种类型的东西有更好的容器吗?
'.at'不返回一个迭代器,它返回一个'mapped_type&',即'的std ::地图&'。 –
我认为你的意思是'find'而不是你第一次使用'at'。然而,之后的路线是没有意义的。你可以用'forwardingTable [dest] [hop] = cost;' –
@MattMcNabb sheesh替换这个完整的函数,这绝对容易得多。我感到很傻。 TY! – MrDuk