请问一下C++中,自己重写sort函数是怎么会事?

在做leetcode791题,别人给出的解答如下:

 class Solution {
public:
    string customSortString(string S, string T) {
        unordered_map<char, int> m;
        for (int i = 0; i < S.size(); ++i) {
            m[S[i]] = i + 1;
        }
        sort(T.begin(), T.end(), [&](char a, char b) {return m[a] < m[b];});
        return T;
    }
};

差了下别人的代码中都没有&,这一题删除&会报错,请问这是怎么会事呢?

4个回答

这里的lambda捕获了外部字典m,所以不能删啊,删了的话就不能捕获外部变量了。这里使用了隐式捕获外部变量,隐式捕获有两种方式,分别是[=]和[&]。[=]表示以值捕获的方式捕获外部变量,[&]表示以引用捕获的方式捕获外部变量。而这里并没有修改外部变量,所以改成[=]
更合适。

sort函数的lambda表达式中使用了外部变量m,&作用就是告诉lanbda表达式采用引用的方式使用外部变量m;
删除&就不能使用外部变量了

sort函数的lambda表达式中使用了外部变量m,&作用就是告诉lanbda表达式采用引用的方式使用外部变量m;

因为正则式中的函数体里面用到函数体外部变量m,所以需要用&抓取外部变量,从而进行访问,说白了就是值传递。
C++11新特性,lambda表达式详细解释,请看这个帖子 Lambda表达式 详解

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问一下C++中,自己重写sort函数是怎么会事?
在做leetcode791题,别人给出的解答如下:rn rnrn```crn class Solution rnpublic:rn string customSortString(string S, string T) rn unordered_map m;rn for (int i = 0; i < S.size(); ++i) rn m[S[i]] = i + 1;rn rn sort(T.begin(), T.end(), [&](char a, char b) return m[a] < m[b];);rn return T;rn rn;rn```rn差了下别人的代码中都没有&,这一题删除&会报错,请问这是怎么会事呢?
请问虚拟内存是怎么会事?
很想知道虚拟内存是怎么会事?是不是和虚拟光驱一个意思?
系统镜像是怎么会事?
我是刚开始接触这一方面的,现在领导让我做系统镜像rn我不清楚什么是系统镜像,谁能告诉我,能帮我解决这个问题吗?(如果可以请说的详细一些^_^)
这个是怎么会事?
无法显示网页 rn试图访问的网页出现问题,无法显示。 rnrn--------------------------------------------------------------------------------rnrn请尝试执行下列操作:rnrn单击刷新按钮,或稍后重试。rnrn打开 solarcity 主页,然后查找与所需信息相关的链接。 rnHTTP 错误 500.100 - 内部服务器错误 - ASP 错误rnInternet 信息服务rnrn--------------------------------------------------------------------------------rnrn技术信息(用于支持人员)rnrn错误类型:rnMicrosoft OLE DB Provider for ODBC Drivers (0x80040E21)rnODBC 驱动程序不支持所需的属性。rn/kaoqin/workmng.asp, 第 1393 行rnrnrn浏览器类型:rnMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) rnrn网页:rnGET /kaoqin/workmng.asp rnrn时间:rn2004年6月16日, 9:24:51 rnrnrn详细信息:rnMicrosoft 支持 rn
请问这个struts错误是怎么会事?
这是错误提示。rn Non-matching extension tags //[ null; Line: 30]rnprobably occurred due to an error in /message/sendMsg.jsp line 30:rnrn 这是提示错误的代码。rnrn ----------所选择单位或个人-----------rn
请问这种情况,是怎么会事?
各位,我已经出现两次这样的情况了rn在使用中,突然网络连接 ---属性 中的本地连接 等图标全部都没有了,网络突然就不存在了rn点击 刷新出现错误提示:rn "网络连接"文件夹不能检索在您的机器上的网络适配器。请确认“网络连接”服务启用并且在运行。rn 我的操作系统是XP 的,上次这种情况出现没有办法只能 重装系统,这次我很郁闷想问大家是怎么回事?你们遇到过吗?怎么解决?
请问“内存溢出”倒底是怎么会事啊?
能举个最简单的例子吗?rn有什么效果?
数据库出错是怎么会事?
我用PB+sql做应用程序,在PB开发环境下连接上了,但生成应用程序运行时,怎么总是出现这个错误:database transaction information not available call settrans or settransobject function 是什么原因,怎么解决呢?
这样的错误是怎么会事?
在一个页面里面我设置了刷新rn rn结果每次刷新的时候总是弹出这样的警告rnrn不重新发送信息,则无法刷新页面。rn请单击“重试”再次发送信息,或单击“取消”返回正查看的页面。rnrnrn请大家帮忙看看为什么啊?rn
这个是怎么会事呢!
我做了一个批处理文件rn autoexec.batrn后来替换了原来放在C盘里了rn但是怎么系统启动还是没有执行呢?rn不懂!~~rn2000的系统rn在CMD。EXErn用 EDITrn写的
高手看看,是怎么会事!!??
我做了一个点菜系统,不过运行的时候,数据输多了,如输4条,程序就会死点!CPU占用率达到100%,是怎么回事?是不是数据库没有关形成的!!???rn
联编 是怎么会事?
有谁可以详细的讲讲
IE停顿是怎么会事?
我是网管,我管理的机器在以前感染过病毒,好象是funlove,我后来用网上下载的D版瑞星杀了毒,现在机子上没有毒了,但是我的IE5在文本框间切换(用tab键或鼠标点击)时停顿,停顿有数秒的时间,在这之间,这一页上的所有动画都不动了。我后来又升级了我的IE,从IE5升级到了IE6,但问题依然没有得到解决。我又将DirectX从6.1升级到了8.1,但问题依然如故!这是怎么会事呢?请各位多多指教!谢谢!
found.000文件夹是怎么会事
found.000文件夹是怎么会事
文件 "filename.do" 是怎么会事 ?
从来没做过 JSP,但在维护几个简单的 JSP 网页。不清楚下面 JavaScript 函数中index.do是怎么会事,我在"triggers/jsp/reports/"中找不到index.do,请哪位朋友指点一下。谢谢!rnrnfunction viewReport() rnrn ......rnrn document.form.action = "/triggers/jsp/reports/index.do";rn document.form.submit();rnrn
不知道是怎么会事啊??
我在win 2000 下用delphi 5 编的一个MDI窗体的应用程序,却发现了两个问题:1:我的程序安装到win 98 下面时,子窗体会变形,变的很大,会超出主窗体的范围,有些字体也发生了变形。 2:我想在主窗体中加入一副图片,所以我加了一个image控件,再加上图片,但是运行以后却显示不出图片。请教各位高手到底是怎么回事。
C#中的session是怎么会事
我初学C#,拿别人的一个软件做参考,里面有一个session吧,中文我知道是会话的意思,rnrn下面是人家软件里的代码:rnSysUser objuser = (SysUser)System.Web.HttpContext.Current.Session["sysuser"];rnrn这里面好象用session保存用户名,因为有六个用户,rn请大家帮我解释一下session的含义,我在网上搜索的全是JAVA里面的内容,大家有没有相关的文章没有?rn我该去哪里找资料?>我翻了一下<>这本书,里面也没有介绍,请大家帮忙rnrn回复有分哦@@@2rn
加速齿轮是怎么会事?
使用了加速齿轮后感到很奇怪,她究竟是什么原理?有人指点迷津吗?
.net中的元数据是怎么会事?
在查看.net程序时常常会要查看方法的定义,可是在VS2005中在方法上右键转到方法定义的时候却转到了一个叫元数据的文件.这个文件象接口一样,只有方法的定义而没有实现.而明明我项目中没有这个接口,而且在另一个类中方法的实现好好的躺在那,就是不出来,这是怎么会事呢?难道这也是VS2005在一个新特性?有什么好处呢?
怎么会事
程序会跳出一个窗口,但是我不能关闭他,但是可以最小化他,怪不怪rnimport java.awt.*;rnpublic class ch701 extends Framernrn public static void main(String args[])rnrn rn ch701 frame1=new ch701();rn frame1.setTitle("建立Frame对象");rn frame1.setSize(200,200);rn frame1.setBackground(Color.green);rn frame1.setLocation(300,300);rn frame1.setResizable(false);rn frame1.setVisible(true);rn rn
怎么会事?极端郁闷中
昨天装了 .NET Framework SDK,启动之后运行.aspx文件没什么问题,但只要一运行需要虚拟目录的文件就报错rnrnrnConfiguration Error rnDescription: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. rnrnParser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.rnrnSource Error: rnrnrnLine 36: "Passport" and "None"rnLine 37: -->rnLine 38: rnLine 39: rnLine 40:
再请教一下:执行不了,怎么会事?
rn 我打算是当文本框值改变时调用函数chang(), rn 可执行不了,怎么会事?rn这个是以前的帖子,但没解决,请教各位怎么回事了?改成onfocus就可以执行了?
这个错误是怎么会事啊!?
usql="update project set flag=1 where code='"&code&"';"rn db.execute usqlrnrnrnrnrnMicrosoft OLE DB Provider for ODBC Drivers 错误 '80004005' rnrn[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。 rnrn/huizhong/manageproject.asp,行74 rnrn请高手指教啊rn他怎么不能让我执行修改操作呢?rnrnrn
VC++的ON_NOTIFY宏是怎么会事呀?
高手能不能详细介绍一下?rn多谢了!
98下检测不到鼠标是怎么会事?
如果不是接口和线路坏了,还有什么原因?rnrn里面的芯片坏了能不能会这样?
CPU温度高是怎么会事?
我新买的机子 AMD的2200+ 主板技嘉的KT600 显卡艾尔沙的518 开机CPU的温度就是50度 正常工作时 57度左右 不知道温度是不是太高啊 ???
请我这个错误是怎么会事?
我因为要在Oracle里面用java读取制定路径下的信息,所以进行授权的设置:rnSQL> beginrn2 dbms_java.grant_permission rn3 (USER,'java.io.FilePermission','d:\dms_tran_bak','read');rn4 end;rn5 /rnbeginrn*rnERROR 位于第 1 行:rnORA-04021: 等待锁定对象 SYS.JAVA$POLICY$SHARED$00000017 时发生超时rnORA-06512: 在"SYS.DBMS_JAVA", line 0rnORA-06512: 在line 2rnrn大家看看这事因为什么啊!Oracle报的错误我实在看不懂rnrn
硬盘太响了是怎么会事?
我的硬盘是去年买的,金钻七代(40G/7200),以前硬盘的噪音很小。但是最近我装了一个大一点的3D游戏以后,玩的时候由于调用的程序太多,硬盘转个不停,而且噪音很大。rn可我把游戏删了以后,问题还是没有解决。就连打开一个窗口硬盘也转个不停。我的同学说迈拓的硬盘本身也比别的牌子的响,是怎么一会事吗?还是我的硬盘要坏了。希望个位给指点一下。谢谢!!!
SQL Server 超时已过期是怎么会事。
现有应用程序运行一段时间之后。rnrn就会没有响应。报超时已过期错。rnrn数据库联不上。该怎么解决。rnrn是怎么会事。rnrn平台。win98,数据库2000个人版。
表格里的字往下掉是怎么会事?
我在表格里写上,我爱你rn可为什么显示rnrn我爱rn你 rnrn这样的呢?
System Idle Process是怎么会事?
我今天才重新装了机子,是XP.可是一次重启后就发现,机子刚启动到桌面后,我点击"开始"后,机子就突然不动了,过个半分钟左右,又恢复正常了.我重启了两次还是这样,然后再重启出现这个情况的时候我在任务管理器中发现"进程"中的最后一项是"System Idle Process"的CPU占用率达到了99%,等恢复了之后,这里的CPU占用率就下来了.我想是这个问题吧.请问是怎么会事?谢谢!rn另外我还在"进程"中看见有很多项"SVCHOST",请问这是什么呀?谢谢!
帮忙看看这个错误是怎么会事?
D:\Program Files\jakarta-tomcat-4.1.24\work\Standalone\localhost\jsptest\filereader_jsp.java:49: cannot resolve symbolrn [javac] symbol : variable file_reader rn [javac] location: class org.apache.jsp.filereader_jsprn [javac] if(file_reader.getFileName()!="")rn
代理服务器是怎么会事,那位大哥帮帮忙!
代理服务器是怎么会事,那位大哥能不能详细介绍一下!谢谢!
Exception in thread "main" java.lang.NoClassDefFoundError:是怎么会事?
各位大虾好:小弟刚开始学java,前日从sun公司下载了jdk1.2.2,打算学习java ,我写的 .java的程序编译时没有提示错误,但执行时提示如下错误:rnException in thread "main" java.lang.NoClassDefFoundError:rn程序中有一main函数,执行时我是在dos下,用java test 执行的,test就是我编写的java的程序。rn繁请各位帮我解答,谢谢!
WINCE启动速度慢是怎么会事?
我的硬件平台是用S2440 + WINCE5.0,应用程序是用C#写的,现在奇怪的是一个月会偶尔会有几次一上电,应用程序及驱动程序运行速度超级慢,但重新上电就正常了,不止到是怎么会事?恳请各位能给点意见,谢谢!
这个小程序是怎么会事?
[code=C/C++]#include rnrnrnclass Pointrnrnpublic:rn Point(float x = 0,float y = 0);rn void setPoint(float,float);rn float getX()const return x;rn float getY()const return y;rn friend ostream & operator << (ostream &,const Point &);rnrnprotected:rn float x,y;rn;rnrnPoint ::Point(float a,float b)rnrn x = a;rn y = b;rnrnrnvoid Point::setPoint(float, float)rnrn x = a;rn y = b;rnrnrnostream & operator << (ostream & output,const Point &p)rnrn output << "[" << p.x << "," << p.y << "]" << endl;rn rn return output;rnrnrnrnint main()rnrn Point p(3.5,6.4);rn cout << "x=" << p.getX() << ",y=" << p.getY() << endl;rn p.setPoint(8.5,6.8);rn cout << "p(new):" << p << endl;rnrnrn char response;rn cin >> response;rnrnreturn 0; rn[/code]rnrn在vc++6.0中的编译错误提示如下:rn--------------------Configuration: Cpp1 - Win32 Debug--------------------rnCompiling...rnCpp1.cpprnc:\code\cpp1.cpp(26) : error C2065: 'a' : undeclared identifierrnc:\code\cpp1.cpp(26) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of datarnc:\code\cpp1.cpp(27) : error C2065: 'b' : undeclared identifierrnc:\code\cpp1.cpp(27) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of datarnc:\code\cpp1.cpp(40) : warning C4305: 'argument' : truncation from 'const double' to 'float'rnc:\code\cpp1.cpp(42) : warning C4305: 'argument' : truncation from 'const double' to 'float'rnError executing cl.exe.rnrnCpp1.exe - 2 error(s), 4 warning(s)rnrnrn这个程序怎么调试。谢谢
datawindow 不让update是怎么会事?
就是把数据添加到datawindow数据窗口后,然后update,出来提示说没有update能力???rn
敬请各位:log文件是怎么会事?
先给下我的代码,代码还没设计到LogrnSub InsertData(ByVal mo As String, ByVal lh As String, ByVal Mat_Code As String, ByVal Loc As String, ByVal Status As String)rn Dim AdoConnect As ADODB.Connectionrn Set AdoConnect = New ADODB.Connectionrn ConnStr = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=tpco1;PassWord=tpco1;Data Source=L2DB"rn AdoConnect.ConnectionString = ConnStrrn AdoConnect.Openrn Dim sql As Stringrn sql = "insert into erp_check_charge(mo,heat_no,gma_mat_code,location,status)" + _rn " values(" + "'" + mo + "','" + lh + "','" + Mat_Code + "','" + Loc + "','" + Status + "')"rn AdoConnect.Execute sqlrn AdoConnect.ClosernEnd Subrnrn也就是我通过上面过程象Oracle表中插入数据。rn请问:如果,那条数据有问题了,比方说其中的一个字段出了问题,如何将词记录写进Log文件?
元素不响应BLUR事件是怎么会事?
在对一元素写脚本的时候有的是JQUERY,其中用到了BLUR事件,但是一点反应都没有是怎么回事?对于其它的事件都没有问题,版本是1.2或1.3的都不行
jar包没有更新 是怎么会事呢?
我们的程序都是先打个war, 然后部署上去的,我更新里面一个jar包,可页面上反映的还是以前的东西,好象没更新上去, 程序也没报错,是什么原因呢? 环境是soloris
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数