如果我想查找某些内容,但不希望它在找不到时最后返回,我应该使用哪种 STL 算法?

Which STL Algorithm should i use if I want to find something but Don't want it to return last if not found?

本文关键字:我应该 返回 最后 算法 STL 找不到 查找 如果 希望      更新时间:2023-10-16

如果我想找到一些东西,但如果没有找到,不希望它最后返回,我应该使用哪个STL算法?

我的用例是,我需要在用户定义类型的向量中查找或返回null。

如果未找到,Find和Find_If似乎会返回最后一项。如果找不到元素,我需要执行"其他操作"。

感谢

如果向量不指向"最后一项",而是指向最后一项之后的空格,则为.end()。如果你需要做其他事情,就把它放在一个条件下。

std::vector<T>::iterator it = std::find(vec.begin(), vec.end(), .....);
if (it != vec.end())
{
   // object found
   return *it;
}
else
{
   // do something else
   return NULL;
}

您想要返回:pointer或-NULL。您有:迭代器或-end()

auto it = std::find(std::begin(x), std::end(x), 42);
return it == std::end(x) ? 0 : &*it;

我真的不明白find返回端有什么问题?end不是最后一个元素,而是"最后一个"。

你可以这样做来捕捉未找到的案例:

std::vector<int> a {1,2,3,4,5,6};
auto it=std::find(a.begin(), a.end(), 4); //or find if
if(it!=a.end())
{
     std::cout <<"found" << std::endl;
}
else
{
    std::cout << "did not find" << std::endl;
}