c++ - C++ 如何在函数退出而不返回encoutering的情况下正确处理函数

  显示原文与译文双语对照的内容

如果找到一个向量,我有一个函数来搜索一个向量并返回它。 但我想知道如果没有找到最好的软件 appraoch 。

我已经创建了一个函数,可以返回 -1或者某些内容,但与返回类型不匹配。


koalaGraph::PVertex Koala::lookUpVertexbyName(const std::string&vertexName, const std::vector<koalaGraph::PVertex>& koalaVertices) {



 for (size_t i = 0; i <koalaVertices.size(); i++) {



 if(koalaVertices[i]->info.name == vertexName) 


 return koalaVertices[i];


 }


}



如果在搜索的项不在向量中的情况下发生,则程序将退出。

时间:

你可以使用 std::optional


#include <optional>


std::optional<koalaGraph::PVertex> 


Koala::lookUpVertexbyName(const std::string&vertexName, 


 const std::vector<koalaGraph::PVertex>& koalaVertices) {



 for (size_t i = 0; i <koalaVertices.size(); i++) {



 if(koalaVertices[i]->info.name == vertexName) 


 return koalaVertices[i];


 }


 return {};


}



int main()


{


 Koala k;


//...


 auto maybeVertex = k.lookUpVertexByName("foo",vertices);


 if(maybeVertex)


 koalaGraph::PVertex&& vertex = *maybeVertex;


//alternatively


 if(maybeVertex.has_value())


//found


}



...