c++ - Expected return of find STL algorithm -


list< int > a;  list < int > ::iterator 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);   = find(a.begin(),a.end(),180);  cout << *it << endl; 

in program value 180 not present in list. per find stl algorithm should return last value, when print value coming garbage. seems iterator pointing other location. please me spot error.

std::find returns end() if element not found in stl container, dereference end() undefined behavior.

you need test iterator it before dereference it:

it = find(a.begin(), a.end(), 180); if (it != a.end()) {   cout << *it << endl; } 

§ 25.2.5

returns: first iterator in range [first,last) following corresponding conditions hold: *i == value, pred(*i) != false, pred(*i) == false. returns last if no such iterator found.

range [first,last) half open range, last means end() not last element in container.


Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -