如果我想查找某些内容,但不希望它在找不到时最后返回,我应该使用哪种 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算法?
我的用例是,我需要在用户定义类型的向量中查找或返回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;
}
相关文章:
- C++ 返回异常,我应该释放资源吗?
- 使用unique_ptr并返回引用,或者我应该使用shared_ptr并在需要时制作副本
- 我应该返回什么而不是标准::shared_ptr<>&?
- 我应该如何从函数返回对象?
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 如果创建支持返回可变参数类型列表的通用模板 API,我应该使用 std::tuple 还是其他东西?
- ob->我应该返回 ob "this" 的地址,但它返回 i ,任何解释?
- 我应该返回引用堆对象还是返回值
- 我应该始终处理参考返回矢量吗?
- 我应该在分配和返回语句中使用static_cast以及原因
- 我应该在简单的访问成员函数中使用 const 返回类型吗?
- 我应该返回一个右值引用(通过 std::move'ing)吗?
- C++ - 我应该制作“运算符+”常量吗?它是否返回引用
- C 我应该如何返回字节数组
- 为什么我的函数在应该返回字符时返回垃圾
- C++ 访问器 - 我应该返回指向成员变量或实际成员变量本身的指针
- 如果我想从函数返回字符串列表,我应该返回原始数组还是 std::vector
- 如果我不想在 QAbstractItemView 中实现选择,我应该返回哪些值?
- 为什么我应该返回引用
- 我应该返回一个值还是抛出一个异常…