C++基础小知识
文章平均质量分 58
Andy in boots
一个有故事的程序猿
展开
-
【C++ STL】lower_bound()和upper_bound( )函数
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到原创 2021-03-04 11:36:29 · 4070 阅读 · 2 评论 -
【C++匿名函数】Lambda函数的用法详解
1.概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}.2.Lambda 语法分析2.1 [函数对象参数]标识一个 Lambda 表达式的开始转载 2021-03-04 11:35:36 · 972 阅读 · 1 评论 -
【C++ STL】sort函数的应用
Sort是一种高效的排序算法,常使用的五种示例如下。示例代码采用编译器vs2012,任何一款支持c++11标准的编译器都可以运行。包含头文件#include <iostream>#include <vector>#include <algorithm>#include <functional>1、重载操作符重载对应操作符<、>、<=、>=来实现排序代码namespace SORT_1{//重载操作符struc原创 2021-03-04 10:56:32 · 236 阅读 · 1 评论 -
c++优先队列的用法 (priority_queue)
既然是队列那么先要包含头文件#include , 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的和队列基本操作相同:top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容定义:priority_queue...原创 2021-03-03 17:27:46 · 141 阅读 · 2 评论 -
getline()函数yyds!震惊,取代了cin的函数竟是它!!!
起因:虽然c++中使用cin读取数据十分的方便,但在某些情况下还是有所局限,因为当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。解决方法因此我们可以使用getline()函数,此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。getline(cin, inputLine);其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变原创 2021-01-26 17:20:34 · 672 阅读 · 0 评论 -
C++中的cctype头文件
#include1.isalnum()检查字符c是十进制数还是大写还是小写字母。如果是,则返回true;如果不是,则返回false。2.isalpha()检查字符c是否是字母。如果是,则返回true;如果不是,则返回false。3.isblank()检查字符c是否为空白字符。空白字符是用于分隔文本行内的单词的空格字符。如果是,则返回true;如果不是,则返回false。4.iscntrl()检查c是否是控制字符。控制字符是不占用显示器上打印位置的字符(这与可打印字符相反,用isprint检查原创 2021-01-26 17:12:30 · 337 阅读 · 0 评论 -
传参中的深拷贝和浅拷贝
深拷贝和浅拷贝的区别深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。这句话读起来很复杂,但其实很好理解,因为这两者的区别就是拷贝后的对象是否对原来的对象有影响浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,浅复制只会将对象的各个属性进行复制,并不会进行递归复制深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存深拷贝它不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深复制原创 2020-09-23 16:21:32 · 801 阅读 · 0 评论 -
const与define的区别与优点
浅述:const用于类成员变量的定义,同时const本身就是一个语言结构,而 define是一个函数,const在编译的时候要比define快很多,所以建议,在能使用const中的场合就使用const区别:define:(1)就起作用的阶段而言: #define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。(2)就起作用的方式而言: #define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。(3)就存储方式而言:原创 2020-07-01 19:44:07 · 850 阅读 · 2 评论 -
cout不明确问题
首先将using namespace std; 删除后,保存cpp文件,再加上using namespace std;保存cpp文件。原创 2020-06-28 20:31:42 · 870 阅读 · 0 评论 -
C++中的模板及其特化相关知识(详细完整)
C++中的函数模板函数模板是一组函数的抽象描述,它不是一个实实在在的函数,函数模板不会编译成任何目标代码。函数模板必须先实例化成模板函数,这些模板函数再程序运行时会进行编译和链接,然后产生相应的目标代码...原创 2020-06-20 18:57:56 · 449 阅读 · 0 评论 -
MFC学习:DC,CDC和HDC
设备描述表(DC) 是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。关于设备描述表可以从以下三种理解方式理解:一、 概述化的描述:图形显示功能是由显卡来完成的(否则,你买显卡干吗),你想要利用显卡的图形显示功能来完成你的图形输出,怎么办,给你一块硬件能用吗(得懂微电子了)?好,现在厂商给你提供一个驱动程序,给你一些调用的接口,你就可以访问了吧。但这种访问是在驱动层,是不是很麻烦,更麻烦的是,每个厂商给自己显卡提供的驱动程序还不转载 2020-06-18 22:19:09 · 556 阅读 · 0 评论 -
LoadBitmap(ID)函数报错:未定义标识符问题
在一个学校的实验中,MFC中更改了位图的ID,使用LoadBitmap(ID)函数时,下方错误列表中出现,未定义标识符"IDB_MAIN_BG"这使我有些慌张,但其实这并无大碍。错误原因:这是VS自带的一个小bug,删除控件不删除ID号,系统更改了资源文件之后,没有触发智能解析系统造成的,可以直接可以忽略继续编译运行程序,如果想消除下方的错误提醒,重新启动一下VS。...原创 2020-06-17 21:13:22 · 1319 阅读 · 3 评论 -
C++ 中的 _T()函数
在今天写一个MFC程序的时候发现了_T("")这个函数,经过在网上查阅学习发现VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改 。以下是今天学到的知识:_T("")是一个宏他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。规定转载 2020-06-16 22:51:56 · 5346 阅读 · 0 评论 -
C++中的virtual函数(虚函数)
在上周的C++课中,我第一次接触到虚函数(virtual function)这个非常重要的概念什么是virtual函数?在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行原创 2020-06-16 09:12:16 · 2656 阅读 · 0 评论 -
C++中return this与*this这两种不同的返回值形式
return this,*this的区别原创 2020-06-15 18:51:29 · 5658 阅读 · 4 评论