c++/STL/map中怎样获取map中第i个元素

Map的iterator貌似不可以直接加减除了线性遍历以外没有别的方法吗?线性遍历一定会TLE比如map<int,int>m;m[3]=2;m[6]=7;m[9]=3;m... Map的iterator貌似不可以直接加减
除了线性遍历以外没有别的方法吗?线性遍历一定会TLE

比如
map<int,int> m;
m[3]=2;m[6]=7;m[9]=3;m[100]=9;

想要m的第3个元素,返回上述中的3;

另外,得到某个迭代器,那么怎么知道它是第几个元素?
比如同上述里,通过first=100返回4
展开
 我来答
百度网友faadf46
高粉答主

2020-05-12 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:74.9万
展开全部

1、在对应的JavaScript文件中,定义一个Map数据结构变量m,并分别打印值和类型,如下图所示。

2、保存代码并运行,结果发现Map {}以及对象类型(Map是一种对象),如下图所示。

3、接着调用Map数据结构中的set方法,添加5个元素,其中有一个的key值重复了,如下图所示。

4、保存代码并运行,查看控制台打印结果,发现key-value值,如下图所示。

5、使用get()方法获取单个元素,传入的参数是key值。

6、最后保存代码并运行,可以查看到Map数据结构中的value值。

cicy821
推荐于2017-10-03 · TA获得超过167个赞
知道答主
回答量:151
采纳率:0%
帮助的人:111万
展开全部
map将key和value组成的pair作为元素,根据key的排序准则自动将元素排序,map中的存取封装了二叉树,因此map按照自己的算法来进行存取,跟你给元素赋值的顺序无关,无论哪一个先赋值最终的map中数据排列属性都是:m[3]=2;m[6]=7;m[9]=3;m[100]=9; 即按照key的大小进行了排序。m[3]=2;m[6]=7;m[9]=3;m[100]=9情况你说的第三个是m[9]=3,如果m[9]=3;m[100]=9;m[3]=2;m[6]=7;你所谓的第三个元素是不是就是:m[3]=2? 这种情况插入到map后map第三个数据依然是m[3]=3.
map就是为了按照key来进行key-value的查看,可以考虑使用list 将键值对做到一个list中,list是顺序存取的,你取的顺序根据有的存顺序决定。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-09-19 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2930万
展开全部
#include<map>
#include<string>
#include<iostream>

int main()
{
map<string,int> words;
map<string,int>::iterator it=words.begin();
for(;it!=words.end();++it)
cout<<"key:"<<it->first
<<"value:"<<it->second<<end1;
return 0;
}Top
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-11-23 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1297万
展开全部
map内部是用红黑树实现的,既然是树,怎么说是“第3个元素”呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式