c++ - 通过 unique_ptr vector 搜索的查找函数的返回值

标签 c++ c++11 vector iterator unique-ptr

我正在通过一个对象的 unique_ptr vector 进行搜索。例如,通过用户输入名称来解析对象。因此有这样一个函数:

std::unique_ptr<obj> const& objectForName(std::string name) {
    std::vector<std::unique_ptr<obj>>::iterator it;
    it = std::find_if(objVec.begin(), objVec.end(), [name](const std::unique_ptr<obj>& object) -> bool {return object->getName() == name; });
    if (it != objVec.end())
      return *it;
    else
      throw(Some_Exception("Exception message"));
}

我想在将对象添加到此 vector 时重用此函数。函数应该调用它并且在找不到它的情况下返回一些可以被调用函数检查的东西,而不是抛出异常。调用函数可以在检查返回值时抛出异常。我的问题是可以返回什么来检查调用函数?

最佳答案

只返回一个指针:

obj const* objectForName( std::string const& name )
{
    std::vector<std::unique_ptr<obj>>::iterator results
            = std::find_if(
                objVec.begin(),
                objVec.end(),
                [&]( std::unique_ptr<obj> const& object ) {
                            return object->getName == name; } );
    return results != objVec.end()
        ? results->get()
        : nullptr;
}

关于c++ - 通过 unique_ptr vector 搜索的查找函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200135/

相关文章:

c++ - 调用成员函数,在类外部声明

c++ - 在多个线程上使用单个 io_service 有什么好处?

c++ - 类型特征以检查参数包中的所有类型是否都是可复制构造的

使用数组初始化时的 C++ STL vector 内存管理?

c++ - 带有抽象类的列表与 vector

c++ - 知道10进制数,求2进制数的位数

c++ - 我怎样才能得到内插的极坐标?

c++ - 重载输出运算符和后增量运算符时出现不匹配 ‘operator<<’ 错误

c++ - 将自己的功能添加到 ifstream

c++ - 检查 vector 中的重复项并计算它们 C++