c++ 输出map每个元素的值

 我来答
小星星教育知识分享
高粉答主

2019-11-23 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67127

向TA提问 私信TA
展开全部

#include<iostream>

#include<string>

#include<map>

usingnamespacestd;

intmain()

{

multimap<string,int>m_map;

strings("中国"),s1("美国");

m_map.insert(make_pair(s,50));

m_map.insert(make_pair(s,55));

m_map.insert(make_pair(s,60));

m_map.insert(make_pair(s1,30));

m_map.insert(make_pair(s1,20));

m_map.insert(make_pair(s1,10));

//方式1

intk;

multimap<string,int>::iteratorm;

m=m_map.find(s);

for(k=0;k!=m_map.count(s);k++,m++)

cout<<m->first<<"--"<<m->second<<endl;

//方式2

multimap<string,int>::iteratorbeg,end;

beg=m_map.lower_bound(s1);

end=m_map.upper_bound(s1);

for(m=beg;m!=end;m++)

cout<<m->first<<"--"<<m->second<<endl;

//方式3

beg=m_map.equal_range(s).first;

end=m_map.equal_range(s).second;

for(m=beg;m!=end;m++)

cout<<m->first<<"--"<<m->second<<endl;

return0;

}

扩展资料

map构造函数;

map<string,int>mapstring;map<int,string>mapint;

map<sring,char>mapstring;map<char,string>mapchar;

map<char,int>mapchar;map<int,char>mapint;

如在打枚举中打印“指定值对应的字符串”时,可是采用map<int,string>的STL实现。

博学小赵爱生活
高能答主

2020-03-31 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:457 获赞数:111847

向TA提问 私信TA
展开全部

实现Map中的值的输出这里是通过while和for循环两种方法输出的。

public void testMap(){            

Map map = new HashMap();

map.put(1, "aa");   

map.put(2, "aac");

map.put(3, "aacc");

map.put(4, "aa4");

9//map.put(1, "aat"); //key 不能够重复 如果Key值重复 则下一个值会覆盖上一个值

//1、迭代map集合的值

Set set = map.keySet(); //key装到set中

Iterator it = set.iterator(); //返回set的迭代器 装的key值

while(it.hasNext()){

Integer key = (Integer)it.next();

String value = (String)map.get(key);

System.out.println(key+" "+value);

}

 //2、迭代map集合的值

Set entry = map.entrySet(); //Set <Map.entry<K,V>>

it = entry.iterator(); //返回set的迭代器 装Map.entry

while(it.hasNext()){ //迭代

Map.Entry entity = (Entry) it.next(); //实体Map.entry的对象取出

Integer key = (Integer)entity.getKey(); //调用实体对象的getKey()获取key的值      

String value = (String)entity.getValue(); //调用实体对象的getValue()获取value的值

System.out.println(key+" "+value);

//用for循环输出Map的值 如下:

System.out.println("-------------------------");

for(Object ob:map.keySet()){

System.out.println(ob+" "+map.get(ob));  

}

System.out.println("####################33");

for(Map.Entry<Integer, String> m:map.entrySet()){

System.out.println(m.getValue()+" "+m.getKey());

}

}

扩展资料:

获取Map集合中的所有键值对象:

public static void main(String[] args) {

Map map = new HashMap();      //定义Map集合对象

map.put("apple", "新鲜的苹果");     //向集合中添加对象

map.put("computer", "配置优良的计算机");

map.put("book", "堆积成山的图书");

Collection values = map.values();    //获取Map集合的value集合

for (Object object : values) {

 System.out.println("键值:" + object.toString()); //输出键值对象

}

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大别山的蜗牛
高粉答主

推荐于2017-08-04 · 一只互联网搬运的蜗牛
大别山的蜗牛
采纳数:6928 获赞数:12024

向TA提问 私信TA
展开全部

1、map简介


map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。


2、查找并获取map中的元素

下标操作符给出了获得一个值的最简单方法:


CString tmp = enumMap[2];


但是,只有当map中有这个键的实例时才对,否则会自动插入一个实例,值为初始化值。


我们可以使用Find()和Count()方法来发现一个键是否存在。


查找map中是否包含某个关键字条目用find()方法,传入的参数是要查找的key,在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator.


int nFindKey = 2; //要查找的Key


//定义一个条目变量(实际是指针)


UDT_MAP_INT_CSTRING::iterator it= enumMap.find(nFindKey);


if(it == enumMap.end()) {


//没找到


}


else {


//找到


}


通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据


3、map的基本操作函数:


C++ Maps是一种关联式容器,包含“关键字/值”对

begin()          返回指向map头部的迭代器

clear()         删除所有元素

count()          返回指定元素出现的次数

empty()          如果map为空则返回true

end()            返回指向map末尾的迭代器

equal_range()    返回特殊条目的迭代器对

erase()          删除一个元素

find()           查找一个元素

get_allocator()  返回map的配置器

insert()         插入元素

key_comp()       返回比较元素key的函数

lower_bound()    返回键值>=给定元素的第一个位置

max_size()       返回可以容纳的最大元素个数

rbegin()         返回一个指向map尾部的逆向迭代器

rend()           返回一个指向map头部的逆向迭代器

size()           返回map中元素的个数

swap()            交换两个map

upper_bound()     返回键值>给定元素的第一个位置

value_comp()      返回比较元素value的函数


例子:

//遍历:
map<string,CAgent>::iterator iter;
 for(iter = m_AgentClients.begin(); iter != m_AgentClients.end(); ++iter)
 {
   if(iter->first=="8001"  {
     this->SendMsg(iter->second.pSocket,strMsg);//iter->first
   }
 }
//查找:
map<string,CAgent>::iterator iter=m_AgentClients.find(strAgentName);
 if(iter!=m_AgentClients.end())//有重名的  {
 }
 else //没有{
 }
//元素的个数
if (m_AgentClients.size()==0)
//删除
map<string,CAgent>::iterator iter=m_AgentClients.find(pSocket->GetName());
 if(iter!=m_AgentClients.end())
 {
     m_AgentClients.erase(iter);//列表移除
 }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
splashchaos
2014-12-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3607万
展开全部

啥意思? 类似这样?

#include <iostream>
#include <map>
#include <string>

using namespace std;
    
int main(int argc, char const *argv[])
{
    map<int, string> mymap;
    mymap.insert(make_pair(4, "apple"));
    mymap.insert(make_pair(2, "orange"));
    mymap.insert(make_pair(1, "banana"));
    mymap.insert(make_pair(3, "grapes"));
    mymap.insert(make_pair(6, "mango"));
    mymap.insert(make_pair(5, "peach"));

    map<int, string>::const_iterator it; 
    for (it = mymap.begin(); it != mymap.end(); ++it)
        cout << it->first << "=" << it->second << endl; 

    cout << endl;
}

运行:

1=banana
2=orange
3=grapes
4=apple
5=peach
6=mango
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyyj528
2017-08-04 · 超过32用户采纳过TA的回答
知道答主
回答量:91
采纳率:100%
帮助的人:34.6万
展开全部
不太明白啥意思,直接来段示例代码,希望有帮助
map<int,int> ma;
ma.insert(make_pair(1,10));
ma.insert(make_pair(2,20));
for(map<int,int>::iterator iter = ma.begin(); iter != ma.end() ; iter++)
cout << iter->first << iter->second << endl;

iter就是mad的迭代器,iter->first就是ma的key,iter->second为ma的value
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式