Why is here it==it1?
set<ll> st;
st.insert(1);
auto it = st.begin(); auto it1=st.begin();
it1--;
if(it==it1){
cout << "HERE\n";
}
But if increase size of set, it!=it1
set<ll> st;
st.insert(1); st.insert(2); st.insert(3);
auto it = st.begin(); auto it1=st.begin();
it1--;
if(it==it1){
cout << "HERE\n";
}
And this code just crushes the program?
set<ll> st;
auto it = st.begin(); auto it1=st.begin();
it1--;
if(it==it1){
cout << "HERE\n";
}
Thanks in advance
If you decrement the
begin()
iterator, you get undefined behavior. That means the C++ standard does not define the behavior of your program, so as far as the standard is concerned, anything can happen. In practice, you can get all sorts of weird stuff since the compiler can assume UB never happens, and possibly optimize based on that assumption.Thanks a lot