c++ - 从函数返回 unordered_map 内的 unordered_map

标签 c++ unordered-map

我正在尝试从 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/

相关文章:

c++ - STL unordered_set如何设置初始桶计数

c++ - Eclipse CDT - 知道哪些所有文件都包含头文件的快捷方式?

c++ - 参数中的指针和引用

c++ - 如何将任意大的持续时间转换为纳秒精度的持续时间而不溢出?

c++ - C++ std::unordered_map 中使用的默认哈希函数是什么?

c++ - unordered_map对哈希函数的多余调用

c++ - C++ 中的 unordered_map 插入是如何工作的?

c++ - 如何解决由于参数中的默认构造函数导致的函数重载不明确

c++ - 为什么此代码无法使用 gcc 4.8.5 进行编译,而使用 clang 可以正常编译

c++ - unordered_map 如何导致 sigsegv