取消引用向量的结束迭代器时打印的奇数值

day*_*yup 3 c++ iterator stl

我有一个存储{1,2,3,4,5}的向量.我试图打印*(vec.end())并取回结果6.我不知道如何解释这个.同样,调用vec.find(500)给出了结果6.为什么我得到这个数字?

#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));
    for (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;
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*zie 5

该行调用未定义的行为:

std::cout << *(set1.end()) << std::endl;

取消引用end()迭代器是未定义的行为.因此可以预期任何事情.