通过引用返回空向量

时间:2019-01-16 21:18:09

标签: c++ c++11 dictionary vector

我通过引用返回向量,如下所示,当地图中没有任何项目时我想返回空向量时,它变得有点丑陋。下面给出警告(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_;

2 个答案:

答案 0 :(得分:5)

您可以使用静态变量:

th:data-parameter1="${parameter1}" onclick="myFunction(this.getAttribute('data-parameter1'));"

答案 1 :(得分:2)

如果您的方法支持失败选项,则可以引发异常而不是返回空向量。

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;

    throw std::exception("Element not found"); // or similar
}