Wondeirng why below code returns 1
? I never insert 1
into the multiset
container.
#include <iostream>
#include <set>
int main ()
{
std::multiset<int> mymultiset;
std::multiset<int>::iterator itlow;
mymultiset.insert(-3);
itlow = mymultiset.lower_bound (3);
std::cout << *itlow << endl; // output 1
return 0;
}
mymultiset.lower_bound(3)
returns the lowest location in the container where3
could go, and that's at the end of the container. Soitlow
is equal tomymultiset.end()
, and it is not dereferenceable.std::cout << *itlow
has undefined behavior.