gpt4 book ai didi

c++ - std::list 和 find(),如果使用在列表中查找未找到项目/值,则会出现错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:30 33 4
gpt4 key购买 nike

我正在使用来自 .在我将它应用到我的程序中之前,我想看看它们是否会像我想的那样工作。起初它运作良好:`

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";
}

它没有输出任何东西,但它应该输出“Not Found”,我得到一个“Debug Assertion Failed!”错误,它说“表达式:列表迭代器不可取消引用”,我该如何解决这个问题?

最佳答案

std::find 在容器中未找到内容时返回 end() 迭代器。并像您在此处所做的那样取消 end() 迭代器:

if (*it == 9)

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

if (it != l.end())
{
cout << "found\n";
}

关于c++ - std::list 和 find(),如果使用在列表中查找未找到项目/值,则会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661449/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com