STL中set能不能返回指定的第几个元素的值?

比如:已知set<int>s;s.insert(10);s.insert(20);s.insert(30);现在我想得到第2个数,那么怎么返回输出啊?谢谢!... 比如:已知set<int> s;
s.insert(10);
s.insert(20);
s.insert(30);
现在我想得到第2个数,那么怎么返回输出啊?
谢谢!
展开
 我来答
百度网友9308069
推荐于2016-04-10 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1854万
展开全部
set是集容器。它的结构特征就是里面的元素是唯一且无序。
无序意味着不便于或不能随机存取操作,就不适用“第2个”这样读。
强行去这么去获得数据,是违反STL设计初衷的。拿错了工具,拿钳子做螺丝刀的活。

如果要用于第n个这样的随机操作,请转换或直接适用Vector这样的容器。Vector的随机效率是O(1)最快。
应用stl的关键在于选择合适的容器。
yywanmya
2011-11-10
知道答主
回答量:45
采纳率:0%
帮助的人:26.6万
展开全部
set<int>::iterator p;
int i = 0;
for(p = s.begin();p != s.end();p++,i++)
{
if(i == 1)//第2个数
{
cout<<*p; //输出
break;

}
}
追问
谢谢啊!不过我想要的是如果有很多数,比如1000000个数,想要快速的返回第k个数怎么弄啊?
如果按上面的做法肯定超时嘛。。
追答
我试过了用这样的方法我的机器取第1000000个数的时候用时0.218秒!我找不到其他的方法了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式