首页 > 其他分享 >关于函数形参里使用const型引用

关于函数形参里使用const型引用

时间:2024-03-02 17:33:55浏览次数:25  
标签:sort 形参里 const 函数 points 引用 超时

刷leetcode的时候,在sort函数里自己实现了一个比较算法:

sort(points.begin(),points.end(),[](const vector<int>u,const vector<int>v){ return u[0]<v[0]||(u[0]==v[0]&&u[1]<v[1]); });

但令人遗憾的是他在某个包含几百个输入的样例中超时了,但只要稍加改动:

sort(points.begin(),points.end(),[](const vector<int>&u,const vector<int>&v){ return u[0]<v[0]||(u[0]==v[0]&&u[1]<v[1]); });

就能解决超时问题,二者不同之处就在于将传值改为传const型引用。为什么常引用能解决超时问题,可以参考下面的博客:

c++ 函数形参使用常引用 const & - 世味 - 博客园 (cnblogs.com)

标签:sort,形参里,const,函数,points,引用,超时
From: https://www.cnblogs.com/Liubox/p/18048950

相关文章

  • const限定符
    Const限定符作用定义一个不可改变的常量,但可初始化,给其他变量赋值如constintbufSize=512;inti=1;constintj=i;intk=j;仅在文件内生效避免重复定义,默认const变量仅在本文件内生效.若需在多个文件间使用,可以加上extern关键字如,在test.cpp中定义并初始化:ex......
  • C++填坑系列——万能引用+移动语义+完美转发
    模板编程中的万能引用、移动语义、完美转发万能引用:T&&,辅助模板编程,这样左值和右值的参数都可以接收;移动语义:std::move,转换为右值,也可结合移动构造函数和移动赋值使用;完美转发:std::forward,可以保留参数的左值和右值属性,因为后续使用该参数可能还需要这个属性;万能引用万能引......
  • C++ 把引用作为返回值
    通过使用引用来替代指针,会使C++程序更容易阅读和维护。C++函数可以返回一个引用,方式与返回一个指针类似。当函数返回一个引用时,则返回一个指向返回值的隐式指针。这样,函数就可以放在赋值语句的左边。例如,请看下面这个简单的程序:1#include<iostream>23usingnamesp......
  • C++ 把引用作为参数
    1#include<iostream>2usingnamespacestd;34//函数声明5voidswap(int&x,int&y);67intmain()8{9//局部变量声明10inta=100;11intb=200;1213cout<<"交换前,a的值:"<<a<<en......
  • EndNote 21:文献整理与引用,一键轻松搞定 mac/win版
    EndNote21是一款功能强大的文献管理软件,专为学术研究者、学生和教师设计。它提供了全面的文献管理解决方案,帮助用户轻松整理、引用和分享学术文献。→→↓↓载EndNote21mac/win版EndNote21拥有直观的用户界面和强大的文献检索功能,用户可以轻松地从各种数据库和在线资源中导......
  • JAVA基础:引用类型参数传递的相关案例(数组的传递) 方法重载 return关键字
    packagecom.itheima.Method;publicclassMethod6{publicstaticvoidmain(String[]args){int[]arrs=newint[]{2,5,6,4};printArray(arrs);}publicstaticvoidprintArray(int[]arr){if(arr!=null){System.out......
  • javascript中的var,let,const区别
    const:这个最简单,只需记住是声明的常量,定义的时候必须声明const的具体值,且之后不允许改变const的值 var和let区别1、由于js引擎存在预解析,会把var变量名进行提升对于var来说是这样执行的varm;console.log(m);m=10;let不存在变量提升,会直接报错   2、var是全局......
  • 通过前向声明解决C++中两个头文件互相引用的问题
    在C++中,当两个头文件互相引用时,可以通过前向声明来避免直接的#include依赖,从而解决循环依赖的问题。前向声明是在一个头文件中声明另一个头文件中的类或类型的名称,而不包括其具体的实现细节。这样,每个头文件只依赖对方的声明,而不需要依赖对方的定义,从而打破了循环依赖。以下是如......
  • 关于“非法的前向引用(illegal forward reference)”的探究
    1.问题:有如下代码:publicclassTest{static{i=0;//给变量赋值可以正常编译通过System.out.print(i);//编译器会提示“非法向前引用”(illegalforwardreference)}staticinti=1;}这段代码来自于《深入理解Java虚拟机:JVM高级特性......
  • 关于指针和引用
    1.指针常量和常量指针2.在函数重载时,常量指针和常量引用类型的形参,与没有const的对应形参相比,被视为一种新的参数类型。因为常量指针和常量引用类型的const是具有所谓的“底层const”(即不可修改其指向的内容)3.引用是自带所谓的“表层const”的,而指针常量也是“表层const”的(即......