gpt4 book ai didi

c++ - find STL算法的预期返回

转载 作者:行者123 更新时间:2023-11-28 00:40:21 26 4
gpt4 key购买 nike

list< int > a;

list < int > ::iterator it;

it = a.begin();

it=a.insert(it,10);
it=a.insert(it,210);
it=a.insert(it,310);
it=a.insert(it,410);
it=a.insert(it,510);


it = find(a.begin(),a.end(),180);

cout << *it << endl;

在这个程序中,值 180 不在这个列表中。所以根据 find STL 算法,它应该返回最后一个值,但是当我打印这个值时,它会变成垃圾。似乎迭代器指向其他位置。请帮我找出我的错误。

最佳答案

a.end() 不是指向最后一个值的迭代器,而是过去列表中最后一个元素的迭代器。绝不能以任何方式打印或访问它。对于 std::find,您应该将返回值与结束迭代器进行比较。如果匹配,则该容器中没有与请求值匹配的元素。

it = find(a.begin(),a.end(),180);
if( a.end() == it ) { // using Yoda conditional
cout << "no element matching value.." << endl;
} else {
cout << *it << endl;
}

关于c++ - find STL算法的预期返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216123/

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