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

白天

我有一个存储{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;
}
卢卡斯·布尔斯玛

vec.end() 不指向最后一个元素,而是指向最后一个元素。

您没有访问向量中的最后一个元素。相反,您要取消引用“无效”迭代器,该迭代器是未定义的行为,在这种情况下,结果是向量中的无效索引。

vec.find 如果找不到搜索到的元素,则返回结束迭代器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解引用迭代器向量时的分段错误

来自分类Dev

在C ++集和向量中解引用迭代器时出错

来自分类Dev

向量的结束迭代器内容

来自分类Dev

迭代器解引用

来自分类Dev

向量迭代器不可解引用(尝试手动反转向量)

来自分类Dev

向量迭代器不能用 std::shared_ptr<> 解引用

来自分类Dev

向量迭代器->打印小节(缺少参数)

来自分类Dev

解引用字符迭代器

来自分类Dev

C ++类型的解引用迭代器

来自分类Dev

将迭代器解引用为指针

来自分类Dev

退出时 C++ XTree 崩溃,映射/设置迭代器不可解引用

来自分类Dev

C ++无法取消引用结束列表迭代器

来自分类Dev

将迭代器解引用为2D向量并将其值分配给另一个2D向量

来自分类Dev

深度复制向量时向量迭代器不兼容

来自分类Dev

为什么不能打印向量的begin()迭代器?

来自分类Dev

从向量不需要的值打印迭代器

来自分类Dev

令牌到无符号打印奇数值

来自分类Dev

带有括号的C ++解引用(带有迭代器)

来自分类Dev

向量迭代器的索引

来自分类Dev

向量迭代器的增减

来自分类Dev

如何从向量打印整数值的范围

来自分类Dev

列表迭代器与向量迭代器

来自分类Dev

用迭代器遍历迭代器的向量

来自分类Dev

指向整数时,迭代器会自动取消引用

来自分类Dev

向量和迭代器,打印出值而不是内存地址

来自分类Dev

迭代器数组的C ++奇数行为

来自分类Dev

迭代器数组的C ++奇数行为

来自分类Dev

向量迭代器不会遍历整个向量

来自分类Dev

向量子集的迭代器