l_xox_l 2022-09-17 14:08 采纳率: 81.3%
浏览 18
已结题

c++中set容器find的问题

set容器中的find,不是如果找不到对应的元素的话就会返回end()吗,但是为什么cout<<*(s1.find(3));这行代码会使程序崩溃,
理论上他应该会返回22才对呀

#include<iostream>
using namespace std;
#include<set>
void test4()
{
    //查找和统计
    set<int>s1;
    s1.insert(10);
    s1.insert(12);
    s1.insert(0);
    s1.insert(1);
    s1.insert(13);
    s1.insert(22);
    s1.insert(4);
    s1.insert(11);
    //s1.find(key)
    //查找key存不存在,若存在返回该元素的迭代器,如不存在返回set.end();
    //s1.count(key)
    // 查找key的个数
    
    
    cout<<*(s1.find(3));
}
int main()
{
    test4();
    system("pause");
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-17 14:12
    关注

    end()类似文件的EOF一样,是个无效标志,你用*取地址当然报错了
    你需要先判断find结果不等于end(),然后才能输出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月17日

悬赏问题

  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统