
C/C++
文章平均质量分 85
C/C++语言
自先沉稳~
这个作者很懒,什么都没留下…
展开
-
STL容器遍历删除时erase操作(iter++)
我们知道STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做:for(list::iterator iter = m_list.begin(); iter != m_list.end(); ){if(需要删除){m_list.erase(iter++);}else++iter;}而不能这样:for(list::iterator iter = m_list.begin(); iter != m_list.end(); ++iter){if(需要删除){转载 2021-03-09 09:46:30 · 1377 阅读 · 0 评论 -
C++之Lambda表达式
1. 概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}.2. Lambda 语法分析2.1 [函数对象参数]标识一个 Lambda 表达式的转载 2021-02-01 15:47:37 · 412 阅读 · 0 评论 -
C++栈上和堆上创建对象的区别
在C++中类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* p=new A(),Ap=(A)malloc();静态建立一个类对象,是由编译器为对象在栈空间中分配内存,通过直接移动栈顶指针挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。动态建立类对象,是使用new运算符将对象建立在堆空间中,在栈中只保留了指向该对象的指针。栈是由编译器自动分配释放 ,存放函数的参数值,局部变量的值,对象的引用地址等。其操作方式类似于数据结构中的栈,通常都是被调用时处于存储空间中,调用完毕原创 2021-01-14 10:37:44 · 2637 阅读 · 0 评论 -
项目发布Debug和Release版的区别
一、Debug和Release的区别Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。(调试信息可在单独的PDB文件中生成)。Release模式下生成一个文件.转载 2021-01-06 15:24:41 · 268 阅读 · 0 评论 -
QString::number()
1.写在前面Qt提供非常多使用的工具类,如排序、类型转换、格式转换等。如果是经常使用则信手拈来,否则间隔时间长了,很基础的工具类都需要查看文档或者百度。所以做个言简意赅的记录笔记,增加印象同时方便查阅。2.QString::numberQString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。查看API接口,number提供如下几种类型的转换,适合各种场合调用。static QString number(int, int base=10)转载 2020-12-16 15:45:11 · 31649 阅读 · 2 评论 -
高位字节与低位字节简单介绍
一般一个16位(双字节)的数据,比如 FF1A (16进制)那么高位字节就是FF,低位是1A如果是32位的数据,比如 3F68415B高位字(不是字节)是3F68低位字是415B右边是低位位,左边是高位C语言中的高位字节和低位字节是什么意思?通常我们从最高有效位(most significant digit)开始自左向右书写一个数字。在理解有效位这个概念时,可以想象一下你的支票数额的第一位增加1和最后一位增加1之间的巨大区别,前者肯定会让你喜出望外。计算机内存中一个字节的位相当于二进制数转载 2020-07-20 09:47:52 · 20571 阅读 · 1 评论 -
C语言的宏定义变量后为什么UL?
通常用宏来定义一年中有多少秒 :#define SECONDS (60* 60* 24* 365)在变量后面加上UL的定义方式:#define SECONDS (60UL* 60UL* 24UL*365UL)#define SECONDS (60* 60* 24* 365UL)原因分析:在32位的设备上,int的范围是-2147483648~2147483647,unsigned int范围是0~4294967295一年的 SECONDS = 60* 60* 24*365 = 31,536,0原创 2020-07-27 20:17:41 · 2161 阅读 · 0 评论 -
c++中的auto、const auto&
auto:在块作用域、命名作用域、循环初始化语句等等 中声明变量时,关键词auto用作类型指定符。const:修饰符 想要拷贝元素:for(auto x:range) 想要修改元素 : for(auto &&x:range) 想要只读元素:for(const auto& x:range)auto auto即 for(auto x:range) 这样会拷贝一份range元素,而不会改变range中元素;但是!(重点) 使用for(auto x:vector)时得到转载 2020-11-06 17:49:48 · 589 阅读 · 0 评论 -
静态库和动态库的区别
什么是库库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a.lib)和动态库(.so.dll)。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:静态库之所以称为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。试想一转载 2020-11-06 10:46:18 · 913 阅读 · 0 评论 -
QT项目中添加资源文件
工程文件的后缀是pro,资源文件的后缀是qrc。下面往一个建好的工程中添加资源文件。假设我的工程目录在/home/home/linux/QT/project/snake目录下面,然后在该工程目录下面创建一个img文件夹用来存放我们的资源,比如文件,图片等。一、点击新建文件或工程选择添加QT资源文件,名称随便填写,我这里填写test,路径存放在工程路径下面。其他的填写默认即可。建立好资源后会默认进入资源管理界面点击添加->添加前缀 输入/png /* 这里是我们自己定义的路径前缀转载 2020-11-02 10:49:33 · 311 阅读 · 0 评论 -
Qt: MinGW 与MSVC的区别
Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是两种不同的编译器。1、MSVC是指微软的VC编译器2、MinGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你 在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。...转载 2020-10-30 09:57:20 · 1304 阅读 · 0 评论 -
函数调用的执行过程
函数,英文名称function,function的更贴切的意思是“功能”或者是说“作用”,但是在中国为什么将function翻译成函数,我非常不理解,也许函数这个名称更加“高大上”的缘故吧!一、函数的由来一个程序经常会通过多次执行相同或者相近功能的程序段来完成,在早期的程序设计中,这些重复的功能段必须通过重复书写代码来实现。这样,不仅会引起重复的劳动、增加程序的长度、造成代码的不一致,而更重要的是,大量重复的程序代码不利于程序的立即与理解。于是人们将功能重复的程序段抽象出来形成一个独立的功能模块,并为转载 2020-10-28 11:26:15 · 11036 阅读 · 0 评论 -
VS中ID号的格式ID_,IDS_,IDC_之间有什么区别
IDC->ID of ControlIDI->ID of IconIDB->ID of BitmapIDD->ID of DialogIDS->ID of StringID -> ID of Menu是VC为了标识不同的资源而,使用的符号,其实他们都是数字,在 resource.h 中可以找到它们,是有一定规律的,不是随机的。一般我们不用去改动它们,只要在资源里面编辑就行了。习惯上IDC表示标转载 2020-09-19 16:24:40 · 1311 阅读 · 0 评论 -
在vc中添加变量向导中 类别 Value和control 是什么意思
ClassWizard支持为控件增加Value和Control两种类型的成员变量,但每个控件同时最多只能有一个Value型和一个Control型的成员变量,前者代表着控件的值,而后者代表着控件本身。如果只想设置或获取控件内部存储的值,那么可以选择添加一个Value型的变量,如果还想在运行时对控件的各种属性进行控制,那么可以选择添加一个Control型的变量。常见的Value型变量有int、UINT、long、DWORD、float、double、BYTE、short、BOOL、CString、CTime、转载 2020-09-19 14:23:33 · 535 阅读 · 0 评论