我正在尝试从一个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)返回容器的迭代器时,我不确定我将如何做到这一点。
事先非常感谢!
发布于 2013-11-13 21:53:22
如果您想返回空映射(如果找不到任何元素),您可以这样做:
Foo GetSubmap(std::string name)
{
FooContainer::const_iterator f = bar.find( name );
return f != bar.end() ? f->second : Foo();
}或者,如果没有找到任何元素,则可以抛出异常。您也可以使用bar[name],但是您应该知道它有副作用--每次查找不存在的元素时,都会将空Foo插入到bar中。
https://stackoverflow.com/questions/19964909
复制相似问题