i have vector storing {1,2,3,4,5}. tried print *(vec.end()) , got result 6. don't know how explain this. similarly, calling vec.find(500) gave result 6. why getting number?
#include<iostream> #include<iterator> #include<set> #include<map> int main() { int a[] = {1,2,3,4,5}; std::set<int> set1(a,a+sizeof(a)/sizeof(int)); (std::set<int>::iterator itr=set1.begin();itr!=set1.end();++itr){ std::cout << *itr << std::endl; } //std::pair<std::set<int>::iterator, bool> ret; //ret = set1.insert(1); //std::cout << *(ret.first) << "first;second" << ret.second << std::endl; std::set<int>::iterator itr1 = set1.begin(); set1.insert(itr1,100); std::advance(itr1,3); std::cout << *itr1 << std::endl; std::cout << *(set1.find(500)) << std::endl; std::cout << *(set1.end()) << std::endl; }
vec.end() not point last element, "behind" last one.
you not accessing last element in vector. instead dereferencing "invalid" iterator, undefined behaviour , turns out invalid index in vector in case.
vec.find returns end iterator if searched element can not found.
Comments
Post a Comment