map使用.xml

pre{
line-height:1;
color:#800080;
background-color:#d2c39b;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#0ed896;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#008080;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#800080;}
.operator?{color:#a776df;font-weight:bold;}

map?是一种关联容器,??提供一对一的关联,?关联的形式为:?KEY----VALUE?????关键字不重复。multimap与map类似,但是允许关键字重复
??????????即:关键字和与之对应的值
??????????????????关键字起到索引的作用,?在map中查找记录?就是根据关键字查找
??????????????????关键字??和?值?可以是任意类型
?????????????????map?也可看做是??关键字映射的集合,?即,map中不可出现重复的关键字,每条映射的关键字都是不同的。??????????
?????????????????map?是基于红黑树结构的,其查找时间为LOG(N)
?如:
??????????????map<int,?int?>???????????????//第一个为关键字,第二个为此关键字所对应的值?????一个关键字只对应一个值,?是一对一的映射关系
??????????????map<CString,int>
??????????????map<int,?CString>
??????????????map<CString,CString>
???????????????........

头文件

 

????#include?<map>??
????using?namespace?std;??//必须加上??

1?插入元素?

??
??1)??insert函数插入

 

????map<int,int>?idMap;??
????idMap.insert(pair<int,int>(1,1));??
????idMap.insert(map<int,int>::value_type(2,1));??
???用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的
?
??判断是否插入成功
?

 

????map<int,int>?idMap;??
????idMap.insert(pair<int,int>(1,1));??
????idMap.insert(map<int,int>::value_type(2,1));??
??????
????pair<map<int,int>::iterator,bool>?InsertPair;??
??????
????InsertPair=idMap.insert?(pair<int,int>(1,1));??
??????
????if?(InsertPair.second==true)??
????{??
????????cout<<"insert?successfully";??
????}else??
????????cout<<"insert?failure";??
??2?)数组插入方式

 

????map<int,int>?idMap;??
????idMap[1]=2;??
???用数组方式就不同了,它可以覆盖以前该关键字对应的值
??但存在一个性能的问题。该方法会将每个插入值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。而用insert方法则可直接赋值为显示值。

2?判断是否存在

Returns?the?number?of?elements?in?a?map?whose?key?matches?a?parameter-specified?key.
?
size_type?count(
???const?Key&?_Key
)?const

1?if?the?map?contains?an?element?whose?sort?key?matches?the?parameter?key;?0?if?the?map?does?not?contain?an?element?with?a?matching?key.

 

????int?num=idMap.count(1);??
????if?(num==0)??
????{??
????????cout<<"the?key?1?does?not?exist";??
????}else{??
????????cout<<"exist";??
????}??

3?查找关键字

iterator?find(
???const?Key&?_Key
);
const_iterator?find(
???const?Key&?_Key
)?const;

 

????map<int,int>::iterator?it;??
????it=idMap.find(2);??
????if?(it==idMap.end())??
????{??
????????cout<<"can?not?find?2";??
????}else{??
????????int?first=it->first;??
????????int?second=it->second;??
????}??
?扩展:
?
iterator?lower_bound(
???const?Key&?_Key
);
const_iterator?lower_bound(
???const?Key&?_Key
)?const;
Returns?an?iterator?to?the?first?element?in?a?map?with?a?key?value?that?is?equal?to?or?greater?than?that?of?a?specified?key.

第一个等于或大于Key的元素

?
iterator?upper_bound(
???const?Key&?_Key
);
const_iterator?upper_bound(
???const?Key&?_Key
)?const;
Returns?an?iterator?to?the?first?element?in?a?map?that?with?a?key?having?a?value?that?is?greater?than?that?of?a?specified?key.

第一个大于Key的元素

?
pair?<const_iterator,?const_iterator>?equal_range?(
???const?Key&?_Key
)?const;
pair?<iterator,?iterator>?equal_range?(
???const?Key&?_Key
);
?????A?pair?of?iterators?such?that?the?first?is?the?lower_bound?of?the?key?and?the?second?is?the?upper_bound?of?the?key.
????Equal_range函数返回一个pair,pair里面第一个变量是Lower_bound返回的迭代器,pair里面第二个迭代器是Upper_bound返回的迭代器,如果这两个迭代器相等的话,则说明map中不出现这个关键字

 

????p2?=?m1.equal_range(?4?);??
??????
????//?If?no?match?is?found?for?the?key,??
????//?both?elements?of?the?pair?return?end(?)??
????if?(?(?p2.first?==?m1.end(?)?)?&&?(?p2.second?==?m1.end(?)?)?)??
???????cout?<<?"The?map?m1?doesn‘t?have?an?element?"??
????????????<<?"with?a?key?less?than?40."?<<?endl;??
????else??
???????cout?<<?"The?element?of?map?m1?with?a?key?>=?40?is:?"??
????????????<<?p2.first?->?first?<<?"."?<<?endl;??

4?大小,包含多少个元素

Returns?the?number?of?elements?in?the?map.
?
size_type?size(?)?const;

 

????int?nSize=idMap.size();??

5?遍历

前向迭代器

 

????map<int,int>::iterator?it;??
????for?(it=idMap.begin?();it!=idMap.end();it++)??
????{??
????????cout<<it->first<<endl;??
????????cout<<it->second<<endl;??
????}??

反向迭代器

 

????map<int,int>::reverse_iterator?iter;??
????for?(iter=idMap.rbegin?();iter!=idMap.rend?();iter++)??
????{??
????????cout<<iter->first<<endl;??
????????cout<<iter->second<<endl;??
????}??

6?删除

iterator?erase(
???iterator?_Where
);
iterator?erase(
???iterator?_First,
???iterator?_Last
);
size_type?erase(
???const?key_type&?_Key
);

 

????//迭代器删除??
????map<int,int>::iterator?it;??
????it=idMap.find(1);??
????idMap.erase(it);??
??????
????//关键字删除??
????idMap.erase(1);??
??????
????//成片删除?或清空??
????idMap.erase(idMap.begin?(),idMap.end());??
??????
????//清空??
????idMap.clear?();??

7?基本函数

 

????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<int,vector<int>>??m_DianmingMap;??

 

????AddDianmingMap(int?nXueqi,int?nXuehao)??
????{??
????????????????????????//将此学生添加到已点名容器中??
??????
????????????map<int,vector<int>>::iterator?it;??
????????????it=m_DianmingMap.find(nXueqi);??
????????????if?(it==m_DianmingMap.end?())?//先查找关键字有无此学期ID??
????????????{??
?????????????????//容器中不存在?则添加??
????????????????vector<int>??int_Vec;??
????????????????int_Vec.push_back(nXuehao);??
??????
????????????????m_DianmingMap[nXueqi]=int_Vec;??
??????????????????
??????
????????????}else{//在查找?此学期中?有无此学号ID??
??????
????????????????vector<int>::iterator?itVec=find(it->second.begin?(),it->second.end(),m_nXuehaoID);??
????????????????if(itVec==it->second.end())??
????????????????{??
????????????????????//没有此学生则添加??
????????????????????it->second.push_back(nXuehao);??
????????????????}??
????????????}??
??????
????????????return?TRUE;??
??????
????}??

本文使用?书画小说软件?发布,内容与软件无关,书画小说软件?更惬意的读、更舒心的写、更轻松的发布。

时间: 2024-11-16 06:39:55

map使用.xml的相关文章

Json、JavaBean、Map、XML之间的互转

思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20171018</version> </dependency> entity public class Stud

Bean、Map、xml相互转换的几种方式

直接上代码 /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); org.apache.commons

解析Map为XML

package Test; import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Map;import java.util.TreeMap;import java.util.Map.Entry; import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Eleme

xml转Map,对象,Map转xml的工具类方法

众所周知,大家在微信开发工程中,由于微信开发文档中,对于消息的接收发送都是基础xml数据的(太坑了),所以我们需要对XML进行解析转换: 1.我们先引入所需要的依赖 dom4j (解析xml的),xstream(可以将对象,以及复杂对象转换为xml); <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</vers

Ibatis学习总结2--SQL Map XML 配置文件

SQL Map 使用 XML 配置文件统一配置不同的属性,包括 DataSource 的详细配置信息, SQL Map 和其他可选属性,如线程管理等.以下是 SQL Map 配置文件的一个例子: SqlMapConfig.xml. 1 <?xml version="1.0" encoding="UTF-8" ?> 2 3 <!DOCTYPE sqlMapConfig 4 5 PUBLIC "-//iBATIS.com//DTD SQL M

java转换xml、list、map和json

java转换xml.list.map和json [java] view plaincopy package com.shine.framework.core.util; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; i

XML转换为Map通用算法实现(Stax实现)

目前项目中需要将XML转换为Map,下面给出了自己的代码实现.请各路大神提供更好的代码实现. 场景: 在项目中需要解析XML文本字符串,需要将XML文本字符串映射为Map格式的对象. 需求: 1.为了提高性能,需要使用Stax进行解析 2.Map结构内部需要支持List.Map.String三种数据格式 示例: 例一: * 字符串:<name>BurceLiu</name><age>18</age> * 转换为的Map结构:{age=18, name=Bur

xml与map互转

/**  * 将Map转为XML,默认root标签为PACKET:  * 由于List中的元素没有名称,默认将List的名称_LIST>部分替换为_INFO>,作为List中元素的名字:  * 暂不考虑List中的元素也是List的情况.  * @param version 例如1.0  * @param encoding 例如UTF-8或者GBK  * @param packetType 例如REQUEST或者RESPONSE  * @param requestType 例如N01  * @

JDOM xml转map

public class XmlUtil { @SuppressWarnings({ "rawtypes", "unchecked" }) public static Map Xml2Map(String xml) throws JDOMException, IOException { Map map = new HashMap(); StringReader reader = new StringReader(xml); SAXBuilder builder =