STL中set能不能返回指定的第几个元素的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL中set能不能返回指定的第几个元素的值?相关的知识,希望对你有一定的参考价值。
比如:已知set<int> s;
s.insert(10);
s.insert(20);
s.insert(30);
现在我想得到第2个数,那么怎么返回输出啊?
谢谢!
无序意味着不便于或不能随机存取操作,就不适用“第2个”这样读。
强行去这么去获得数据,是违反STL设计初衷的。拿错了工具,拿钳子做螺丝刀的活。
如果要用于第n个这样的随机操作,请转换或直接适用Vector这样的容器。Vector的随机效率是O(1)最快。
应用stl的关键在于选择合适的容器。 参考技术A 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秒!我找不到其他的方法了。。
以上是关于STL中set能不能返回指定的第几个元素的值?的主要内容,如果未能解决你的问题,请参考以下文章