重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
标准C语言中没有map函数,map是C++的一个函数,参考以下内容研究一下吧
成都创新互联公司自2013年创立以来,先为博白等服务建站,博白等地企业,进行企业商务咨询服务。为博白企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
1. map最基本的构造函数;
mapstring ,intmapstring; mapint,string mapint;
mapsring,charmapstring; map char ,stringmapchar;
mapchar,intmapchar; mapint ,charmapint;
2. map添加数据;
mapint ,stringmaplive;
1. maplive.insert(pairint,string(102,"aclive"));
2. maplive.insert(mapint,string::value_type(321,"hai"));
3. maplive[112]="April";//map中最简单最常用的插入添加!
3. map中元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
mapint ,string ::iteratorl_it;;
l_it=maplive.find(112);//返回的是一个指针
if(l_it==maplive.end())
cout"we do not find112"endl;
elsecout"wo find112"endl;
mapstring,stringm;
if(m[112]=="")
cout"we do not find112"endl;
4. map中元素的删除:
如果删除112;
mapint ,string::iterator l_it;;
l_it =maplive.find(112);
if( l_it == maplive.end())
cout"we do not find112"endl;
else maplive.erase(l_it);//delete 112;
5. map中 swap的用法:
Map中的swap不是一个容器中的元素交换,而是两个容器交换;
For example:
#includemap
#includeiostream
usingnamespace std;
int main()
{
map int, int m1, m2, m3;
map int,int::iterator m1_Iter;
m1.insert( pair int, int(1, 10 ) );
m1.insert ( pair int,int ( 2, 20 ) );
m1.insert ( pair int,int ( 3, 30 ) );
m2.insert ( pair int,int ( 10, 100 ) );
m2.insert ( pair int,int ( 20, 200 ) );
m3.insert ( pair int,int ( 30, 300 ) );
cout "The original map m1is:";
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
cout " "m1_Iter-second;
cout "." endl;
// This isthe member function version of swap
// m2 is said to be theargument map; m1 the target map
m1.swap( m2);
cout "Afterswapping with m2, map m1 is:";
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
cout " " m1_Iter -second;
cout "." endl;
cout "After swapping with m2, mapm2 is:";
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
cout " " m1_Iter -second;
cout "." endl;
// This is the specialized template version of swap
swap( m1, m3 );
cout "Afterswapping with m3, map m1 is:";
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
cout " " m1_Iter -second;
cout "." endl;
}
首先,这个是调用函数的格式,意思是调用了函数map,并将map函数返回的参数赋值给了 t
这里的map函数是一个被调用函数,其形式参数有两个变量,并可知map函数运行结束后会有一个返回值
至于形参的类型以及返回的结果需要具体知道map函数才能得知
在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合。由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referentialtransparency)的和没有副作用(NoSideEffect)。IT培训就来为大家介绍介绍。
任何一种函数式语言中,都有map函数与faltMap这两个函数,比如python虽然不是纯函数式语言,也有这两个函数。再比如在jdk1.8之后,也加入了Lambda表达式,自然也支持map函数。
map和faltMap的共同点和区别
1、共同点
都是依赖FuncX(入参,返回值)进行转换(将一个类型依据程序逻辑转换成另一种类型,根据入参和返回值)
都能在转换后直接被subscribe
2、区别
map返回的是结果集,flatmap返回的是包含结果集的Observable(返回结果不同)
map被订阅时每传递一个事件执行一次onNext方法,flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发,被订阅时将所有数据传递完毕汇总到一个Observable然后一一执行onNext方法(执行顺序不同)(如单纯用于一对一转换则和map相同)
map只能单一转换,单一只的是只能一对一进行转换,指一个对象可以转化为另一个对象但是不能转换成对象数组(map返回结果集不能直接使用from/just再次进行事件分发,一旦转换成对象数组的话,再处理集合/数组的结果时需要利用for一一遍历取出,而使用RxJava就是为了剔除这样的嵌套结构,使得整体的逻辑性更强。)
flatmap既可以单一转换也可以一对多/多对多转换,flatmap要求返回Observable,因此可以再内部进行from/just的再次事件分发,一一取出单一对象(转换对象的能力不同)
map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。而flatMap与map唯一不一样的地方就是传入的函数在处理完后返回值必须是List,其实这也不难理解,既然是flatMap,那除了map以外必然还有flat的操作,所以需要返回值是List才能执行flat这一步。