随笔分类 - C++
摘要:问题来源 直接在模板参数中使用lambda表达式不被允许。比如: priority_queue<int, vector<int>, greater<int>> minHeap; 在最小堆定义中,我们第三个模版是 greater<int>,这个模版参数希望我们传入一个类型,而不是函数,因为模版参数在编
阅读全文
摘要:问题: Clion无法编译使用#include<bits/stdc++.h>万能头文件 ##原因: Mac自带的编译器clang无法使用万能头文件及部分算法所需函数。 补充说明: C/C++主要编译器为:clang,gcc,g++ C++编译器:clang , g++ C编译器:gcc(含 g++
阅读全文
摘要:在别人博客看到这样一句话,觉得总结得蛮到位的:程序运行平台 = CPU+OS+Compiler 在C语言和C++中,经常会出现某一种数据类型所占的字节数为多大的问题,其实这些机器字长和和机器位数没有直接关系,但是和编译器有关系,由编译器在编译期间决定。 16位编译器 32位编译器 64位编译器 ch
阅读全文
摘要:##语法 静态方法关键字:static 静态方法如何调用/使用方法:直接 类名.方法名( ) ,不需要new一个对象/实例化,通过类名直接调即可 ##注意 在C++中,this关键字不能用于static方法中。(概念冲突了) 原因: static:修饰的变量或者方法是属于类,一般通过类名调用。sta
阅读全文
摘要:什么是面向对象(OOP) 面向对象是一种对现实世界理解和抽象的方法、思想,通过将需求转化为对象进行问题处理的一种思想。 三大特性? 继承 继承的意义:继承主要实现代码重用,节省开发时间。 C++的三种继承 :public继承方式、protect继承方式、private继承方式(默认) https:/
阅读全文
摘要:简单来说:向上转型就是将子类转化成父类 数据类型转换,编译器会直接将小数部分丢掉。比如:int a=6.6,输出%d的时候就是6 只能将派生类赋值给基类 : 派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用 派生类对象赋值给基类对象,舍弃派生类新增的成员 派生类指针赋
阅读全文
摘要:头文件 map:#include<map> unordered_map:#include<unordered_map> 底层实现 <map>:内部是红黑树。所以对map进行遍历,结果会根据 key 值进行自动排序,且为 升序 。 补充:红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树。 <
阅读全文
摘要:正好准备面试,顺便复习一下指针和引用,这俩在比赛中用的比较少。 简单来说,引用符号是 & ,变量前加了这个符号,可以在我们修改形参的时候同时改变实参的值。因为一般的话,实参传值之后,实参是实参,形参是形参,除非做了return等操作。 ##引用用法 #include <iostream> using
阅读全文
摘要:##题意 输出任意一个重复的数字即可,map判断就行。 ##注意 关于调用C++ public、protected、private中的方法的写法:https://blog.csdn.net/gxgalaxy/article/details/81259083 ##提交AC代码写法 注意:需要 retu
阅读全文
摘要:##概念 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法,以实现多态性。该纯虚函数在子类中就变成了虚函数。 ##使用场景 在基类中声明。 ##纯虚函数的使用 使用即:如何在基类中声明/使用纯虚函数 注意:函数声明后面/原型后加 =0 class Stude
阅读全文
摘要:##虚函数使用 虚函数:在基类中加了 virtual 关键字的函数就是虚函数。 ##虚函数原理 虚函数实现原理:虚函数表和虚函数指针。 ##虚函数和纯虚函数的区别 定义一个函数为虚函数,不代表函数为不被实现的函数;定义一个函数为纯虚函数,才代表函数没有被实现。 定义为虚函数的目的:为了允许用基类的指
阅读全文
摘要:#include <iostream> #include <string> using namespace std; class Parent { public: virtual void print() // 这个函数可能被继承的子类重写,所以加上virtual 关键字来修饰它,称为虚函数,实现多
阅读全文
摘要:##输出带空格格式 控制格式,输出格式:1 2 3 4 5(中间有空格,末尾无空格): auto it=mp.begin(); cout<<it->second; while(++it!=mp.end()) cout<<" "<<it->second; ##输出首尾元素 输出map中最后一个元素和第
阅读全文
摘要:wsl,终于解决了,每次都配不好,实在是ddl催促我赶紧弄好,不解决的问题迟早得解决掉~ 有两种方法:一种是每次新建一个cpp就去修改CMakeLists.txt里面的文件,一种是进行配置然后之后每次就点一下就行。 第一种方法:https://blog.csdn.net/hrbust_cxl/art
阅读全文
摘要:##GDB安装步骤 远程连接服务器 CentOS和Ubuntu都是Linux的发行版版,所以命令大差不差,但是在安装命令上是不一样的。 如果是CentOS,则输入: yum install gdb 如果是Ubuntu,则输入: sudo apt-get install gdb 查看已安装GDB的版本
阅读全文
摘要:##PS 因为近期面试常问,所以记录一下相关问题。 ##C++多态 什么是多态/如何理解多态:多态是面向对象编程的特性之一,还包含继承和封装,多态跟继承关系比较大。多态顾名思义多种形态,简单来说就是一个接口多种方法。具体来说就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。通常是为
阅读全文
摘要:进入OpenCV官网 → 找到 “ Releases ”,点击进入 → 点击“resources”开始下载 安装cmake程序。 在终端中输入 brew install cmake,计算机开始自动安装cmake。 注意!!!:如果没有安装Homebrew(或者直接使用命令安装cmake出现了错误:
阅读全文
摘要:##占用内存 一个C/C++编译的程序占用内存分为以下五个部分: 栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。 堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似
阅读全文
摘要:##scanf 报 unsafe 报错界面: 原因: scanf在C中是不安全的一个函数,因为scanf()在读取数据时不检查边界,所以可能会造成内存访问越界的情况。 后来VS就将 scanf() 函数 替换成了 scanf_s() 函数,但是 scanf_s() 在调用的时候,必须要写一个数字来表
阅读全文
摘要:ctrl+K+D:全部格式化 ctrl + K + C:注释 ctrl + K + U:取消注释 ctrl+F5:运行 ctrl+L:删除光标所在行(无需选中)
阅读全文