Std::list和find(),如果使用find在列表中未找到项/值,则出现错误

std::list and find(), if item/value is not found using find in list error appears

本文关键字:find 错误 list 如果 列表 Std      更新时间:2023-10-16

我正在测试std::list与find()函数从。在我将它实现到我的程序之前,我想看看它们是否会像我想象的那样工作。一开始效果很好:'

list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(9);
list<int>::iterator it = find(l.begin(), l.end(), 9);
if (*it == 9)
{
    cout << "Found";
}
else 
{
    cout << "Not Found";
}

在这个例子中,输出是"Found",这是正确的,但是当我这样做时:

list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(9);
list<int>::iterator it = find(l.begin(), l.end(), 3);
if (*it == 9)
{
    cout << "Found";
}
else 
{
    cout << "Not Found";
}

它不输出任何东西,但它应该输出"未找到",我得到一个"调试断言失败!"错误,它说"表达式:列表迭代器不可解引用",我怎么能解决这个问题?

std::find返回end()迭代器。并取消对end()迭代器的引用,如下所示:

if (*it == 9)

未定义行为。要查看是否找到了元素,请检查end迭代器:

if (it != l.end())
{
   cout << "foundn";
}