Возвращение unordered_map внутри 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) возвращает итератор для контейнера.

Спасибо заранее!

0

Решение

Если вы хотите вернуть пустую карту, если элемент не найден, вы можете сделать это так просто:

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

Или вы можете выбросить исключение, если элемент не найден. Вы также можете использовать bar[name], но вы должны знать, что у него есть побочный эффект — пустой Foo будет вставлен в bar каждый раз, когда вы ищете несуществующий элемент.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]