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 展开
除了线性遍历以外没有别的方法吗?线性遍历一定会TLE
比如
map<int,int> m;
m[3]=2;m[6]=7;m[9]=3;m[100]=9;
想要m的第3个元素,返回上述中的3;
另外,得到某个迭代器,那么怎么知道它是第几个元素?
比如同上述里,通过first=100返回4 展开
4个回答
展开全部
1、在对应的JavaScript文件中,定义一个Map数据结构变量m,并分别打印值和类型,如下图所示。
2、保存代码并运行,结果发现Map {}以及对象类型(Map是一种对象),如下图所示。
3、接着调用Map数据结构中的set方法,添加5个元素,其中有一个的key值重复了,如下图所示。
4、保存代码并运行,查看控制台打印结果,发现key-value值,如下图所示。
5、使用get()方法获取单个元素,传入的参数是key值。
6、最后保存代码并运行,可以查看到Map数据结构中的value值。
展开全部
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是顺序存取的,你取的顺序根据有的存顺序决定。
map就是为了按照key来进行key-value的查看,可以考虑使用list 将键值对做到一个list中,list是顺序存取的,你取的顺序根据有的存顺序决定。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
map内部是用红黑树实现的,既然是树,怎么说是“第3个元素”呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询