【发布时间】:2018-05-16 07:07:25
【问题描述】:
所以我有下面的地图parseTable
std::map<std::pair<Symbol, Symbol>, list<Symbol> > parseTable;
如果我以这种方式初始化我的地图,我对如何访问列表值感到困惑:
std::map<std::pair<Symbol, Symbol>, list<Symbol> > parseTable = {
{{Symbol::Input, Symbol::OpenPar}, {Symbol::Expr, Symbol::Semicolon, Symbol::InputP}},
{{Symbol::Input, Symbol::Ident}, {Symbol::Expr, Symbol::Semicolon, Symbol::InputP}},
{{Symbol::Input, Symbol::Number}, {Symbol::Expr, Symbol::Semicolon, Symbol::InputP}}
};
当我使用地图的find() 函数时,我想单独访问列表中的每个值。
这是我想出的,但我无法获得对该索引值的引用:
if (parseTable.find(std::pair(stack_symbol.top(), current_symbol)))
【问题讨论】:
-
为什么是 map 而不是 unordered_map?
-
如果您不需要对列表中的值进行排序,多映射可能会更好。
标签: c++ c++11 stdmap std-pair stdlist