Я возвращаю вектор по ссылке, как показано ниже, и становится немного уродливо, когда я хочу вернуть пустой вектор, когда на карте нет элемента. Далее выдается предупреждение (returning address of local variable
), и для его исправления у меня есть еще одна закрытая переменная-член vector<ClassA> empty_
, и я могу вернуть ее, чтобы избежать этого.
Мне интересно, есть ли элегантный способ реализовать это.
const std::vector<ClassA>& GeVector(const std::string& class_id) {
auto iter = class_map_.find(class_id);
if (iter != class_map_.end())
return iter->second;
return {}; // return empty_;
}
private:
std::unordered_map<std::string, std::vector<ClassA>> class_map_;
vector<ClassA> empty_;