鱼C论坛

 找回密码
 立即注册
查看: 1562|回复: 3

stl中set的问题小白求解答

[复制链接]
发表于 2016-9-24 10:07:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题是从一组数列中找出最大值 最小值  和
想法是用set容器来解决 ,因为考虑到set可自动升序排序(最大值:set.end() 最小值:set.begin())
然而问题来了....
当我向set中插入一个8151时  *set.end()返回1  这是什么鬼?

贴出code

  1. #include<iostream>
  2. #include<set>
  3. using namespace std;
  4. int main()
  5. {
  6.         set<int> set;
  7.         int n,sum=0,temp;
  8.         cin>>n;
  9.         while(n--)
  10.         {
  11.                 cin>>temp;
  12.                 sum+=temp;
  13.                 set.insert(temp);
  14.         }
  15.         cout<<*set.end()<<endl;
  16.         cout<<*set.begin()<<endl;
  17.         cout<<sum<<endl;
  18.         return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-24 21:46:41 | 显示全部楼层
set.end()指向set中最后一个元素的下一个位置,也就是set.end()指向的是无效元素
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-25 10:40:09 From FishC Mobile | 显示全部楼层
这么回事啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-26 20:20:28 | 显示全部楼层

end()返回的是尾后迭代器, 获取最后元素请用 back()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-11 11:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表