我正在返回一个向量的引用,如下所示,当映射中没有项目时,如果要返回一个空向量,它会变得有些丑陋。以下内容会发出警告(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_;
empty_
是一种优雅的实现方式。为了保险起见,可以将其设为静态。 - SergeyAnullptr
。 - johnempty_
是一个不错的解决方案。该函数也可以抛出异常或返回指针而不是引用(编译失败不是阻碍因素)。 - ilya1725