0

我正在尝试从 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) 返回容器的迭代器。

提前谢谢了!

4

1 回答 1

2

如果你想在没有找到元素的情况下返回空地图,你可以这样做:

Foo GetSubmap(std::string name)
{
    FooContainer::const_iterator f = bar.find( name );
    return f != bar.end() ? f->second : Foo();
}

或者,如果没有找到元素,您可能会抛出异常。您也可以使用bar[name],但您应该知道它有副作用 -bar每次查找不存在的元素时都会插入空的 Foo 。

于 2013-11-13T21:53:22.793 回答