我正在尝试从 unordered_map 中返回 unordered_map 的拷贝。
下面的代码更清楚地说明了我的问题:
typedef std::unordered_map<std::string, int> Foo;
typedef std::unordered_map<std::string, Foo> FooContainer;
...
FooContainer bar;
// etc
...
Foo GetSubmap(std::string name)
{
// ???
}
我不确定我会怎么做,因为 unordered_map.find(foo) 返回容器的迭代器。
非常感谢!
最佳答案
如果你想在没有找到元素的情况下返回空 map ,你可以像这样简单地做:
Foo GetSubmap(std::string name)
{
FooContainer::const_iterator f = bar.find( name );
return f != bar.end() ? f->second : Foo();
}
或者如果没有找到元素,你可能会抛出异常。您也可以使用 bar[name]
,但您应该知道它有副作用 - 每次查找不存在的元素时,空的 Foo 都会被插入到 bar
中。
关于c++ - 从函数返回 unordered_map 内的 unordered_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964909/