![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
大西瓜不甜
这个作者很懒,什么都没留下…
展开
-
c++ make_shared
make_shared的使用:shared_ptr<string> p1 = make_shared<string>(10, '9'); shared_ptr<string> p2 = make_shared<string>("hello"); shared_ptr<string> p3 = make_shared<string>(); 尽量使用make_shared初始化C++11 中引入了智能指原创 2021-08-23 14:38:22 · 4979 阅读 · 1 评论 -
c++ 函数参数后面跟override
class A{ virtual void foo();}class B :public A{ void foo() override;} 如果一个成员函数后面跟了一个override关键字,说明这个函数将重写这个函数,下面的方式也可以进行重写。void foo();virtual foo();但是后面加override算是一种声明,此函数要重写同名函数,所以如果将函数的名字写错了比如写成f00则会报错,而下面的两个却不会,这样也可以提醒代...原创 2021-08-23 14:19:04 · 1102 阅读 · 0 评论 -
c++ 智能指针
前言C++里面的四个智能指针: auto_ptr, unique_ptr,shared_ptr, weak_ptr 其中后三个是C++11支持,并且第一个已经被C++11弃用。C++11智能指针介绍智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。C++ 11中最常用的智能指针类型为shared_ptr,它采用引用计数的方法,记录当前内存资源被多少个智能指针引用。该引用计数的内存在堆上分配。当新增一个原创 2021-08-23 14:13:23 · 222 阅读 · 0 评论 -
C++11新特性 - 使用=default生成默认构造函数
从C++基本知识说起先看下面代码:struct Point{ int x; int y;};代码内容很简单,定义了一个包含成员x,y的类Point。在需要的地方可以使用这个类: Point pt; pt.x = 10; pt.y = 10;虽然我们并没用定义Point类的构造函数,我们依然可以定义Point类的pt对象并使用它,其原因是编译器会自动生成一个缺省的的构造函数。其效果大致相当于:struct Point{ Point()...原创 2021-08-23 14:00:46 · 357 阅读 · 0 评论 -
C/C++常见面试题整理
1、C++里面如何声明const void f(void)函数为C程序中的库函数?【参考答案】: 在该函数前添加extern “C”声明。由于编译后的名字不同,C++程序不能直接调用C 函数。2、c++中类和c语言中struct的区别(至少两点)【参考答案】:(1) c++中的类默认的成员是私有的,struct默认的是共有的。(2) c++中的类可以定义成员函数,struct只能定义成员变量。3、变量的声明和定义有什么区别?【参考答案】: 声明变量不分配空间,定义变量要分配空间。原创 2021-06-23 15:31:41 · 1848 阅读 · 1 评论 -
c++粒子群优化算法解决多维01背包问题
#include<random>#include <iostream>#include<vector>#include<fstream>#include <time.h> using namespace std;//rewrite the <bool operator<(vector<int>&a ,vector<int>&b) { bool res = true; if .原创 2021-04-18 14:21:28 · 778 阅读 · 0 评论 -
c++ 求任意阶矩阵行列式代码
double matrix::determinant() { // calculate the determinant of the matrix //使用定义法计算行列式 //如果只有一个元素,则返回当前元素 if (n == 1) { return values[0]; } else { //对第一行使用代数余子式的方式计算 double sub = 0; for (int i = 0; i < n; i++) { //初始化一个子矩阵 int *subMa.原创 2021-04-02 23:17:42 · 1384 阅读 · 0 评论 -
《剑指offer》刷题技巧(c++版)
剑指 Offer 06. 从尾到头打印链表使用vector的insert函数,通过头插法插入到数组中single element (1) iterator insert (const_iterator position, const value_type& val); fill (2) iterator insert (const_iterator position, size_type n, const value_type& val)原创 2021-03-20 15:10:50 · 276 阅读 · 0 评论 -
C++ 初始化二维vector
初始化vector<vector<int>> v(r, vector<int>(c, 0));resize()vector<vector<int>> v;v.resize(r); // rowfor (int i = 0; i < r; ++i){ v[i].resize(c); // column}原创 2021-03-19 16:15:30 · 472 阅读 · 0 评论 -
c++ string 类型操作【修改,赋值,替换】
字符串内容的修改可以通过使用多个函数修改字符串的值。例如assign(),operator=,erase(),交换(swap),插入(insert)等。另外,还可通过append()函数添加字符。下面逐一介绍各成员函数的使用方法。assign()函数使用 assign() 函数可以直接给字符串赋值。该函数既可以将整个字符串赋值给新串,也可以将字符串的子串赋值给新串。其在 basic_string 中的原型为:basic_string& assign (const E*s); ...原创 2021-03-19 13:30:10 · 4428 阅读 · 0 评论 -
C++中::前面什么都不写
#include <iostream>using namespace std;void fun(){ cout << "::fun()" << endl;}class A{public: void fun() { cout << "A::fun()" << endl; } void test() { ::fun(); fun(); }};int main(){ A a; a.test(); sy.转载 2021-01-14 14:39:28 · 648 阅读 · 0 评论 -
c++ 中 lstrlen和strlen 以及sizeof的区别
strlen()是返回字符串的字节长度,lstrlen()是返回字符串的字符长度。也就是说第二个函数可能和第一个函数结果一样,如果字符串中字符单位都是单字节的话。一般来说主要区别在于ascii的字符,还是unicode或者是utf的区别。ASCII编码是一个字符占一个字节,Unicode是一个字符占两个字节.求这两种字符串的长度,要用两个函数分别来.lstrlen(),strlen()用来操作字符串或字符数组,lstrlen(),strlen()是在程序运行后得到字符串...原创 2021-01-14 14:33:20 · 556 阅读 · 0 评论 -
win7 tornado工具上编译c代码出现 错误 parse error before xx
编译器只支持 C89 标准。这个 C 标准要求在一个块内的变量的声明要放在所有非声明语句的前面。所以例如for 循环中 int i 这种声明都要放在函数的最开头原创 2020-11-21 14:54:10 · 537 阅读 · 0 评论 -
C 语言中 void* 详解及应用
void 在英文中作为名词的解释为"空虚、空间、空隙",而在 C 语言中,void 被翻译为"无类型",相应的void *为"无类型指针"。void 似乎只有"注释"和限制程序的作用,当然,这里的"注释"不是为我们人提供注释,而是为编译器提供一种所谓的注释。void 的作用1.对函数返回的限定,这种情况我们比较常见。2.对函数参数的限定,这种情况也是比较常见的。一般我们常见的就是这两种情况:当函数不需要返回值值时,必须使用void限定,这就是我们所说的第一种情况。例如:vo...原创 2020-11-19 10:11:12 · 362 阅读 · 0 评论 -
C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中的函数重载在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺原创 2020-11-17 23:18:55 · 195 阅读 · 0 评论 -
CString 和 LPCTSTR等之间的转换
CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。 常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T( "abcd ")时, 字符串 "abcd "就会根据编译时的是否定一_UNICODE来决定是char* 还是 w_char*。 同样,TCHAR 也是相同目的字符宏。 看看定义就明白了。简单起见,下面只介绍 ansi 的情况,unico...原创 2020-11-06 21:23:47 · 3524 阅读 · 0 评论 -
静态链接库lib和动态链接库ddl的区别
联系:都是在链接阶段使用的区别:不同的是静态链接库中的代码会直接放到exe中,而动态链接库在使用时才会被加载到这个exe执行的内存空间,所以使用静态链接库的时候exe会比较大,使用动态链接库的时候exe会比较小。静态链接库中不能再包含其他的动态或者静态库,而动态库则可以。此外,在链接阶段如果发现函数未定义的话,会在这一个阶段被发现...原创 2020-10-29 22:28:16 · 303 阅读 · 0 评论 -
C++ int类型转 LPCTSTR类型
使用到的CString 类的头文件包含是 #include<atlstr.h> CString str; str.Format(_T("%d"), i); LPCTSTR re = str.AllocSysString();原创 2020-10-20 13:19:09 · 1565 阅读 · 0 评论 -
c++ 中的 LPCTSTR类型
LPCTSTR类型 L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。 P表示这是一个指针;C表示是一个常量;T表示在Win32环境中,有一个_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。 STR表示.原创 2020-10-20 12:58:52 · 4849 阅读 · 0 评论 -
C++ int类型转成string 类型
1. int a = 10; char *intStr = itoa(a); string str = string(intStr); 2. int a = 10; stringstream ss; ss << a; string str = ss.str(); 3. C++11 (推荐,如果支持的话) #include <string> std::string s =...原创 2020-10-20 12:48:30 · 1745 阅读 · 0 评论 -
边值问题的解法 (c++实现试射法)
首先介绍什么是柯西问题:柯西问题就是偏微分方程中,只有初始条件,没有边界条件的定解问题。《数学物理方程》李明奇 田太心 电子科技大学出版社 40页 :“初值问题(或柯西问题)是只有初始条件,没有边界的定界问题:反之,边值问题是没有初始条件,只有边界条件的定解问题。既有初始条件也有边界条件的定解问题成为混合问题”简单来说柯西问题可以通常认为是初值问题解决边值问题的两种方法:1.打靶法:...原创 2020-10-16 18:59:01 · 1073 阅读 · 0 评论 -
visual studio 2019配置 opengl
1. 首先下载OpenGL库文件http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip点击蓝色字体会自动下载下载后解压得到如图5个文件。根据后缀名,分为 .dll; .h; .lib 三类。这个东西确实是上个世纪的产物,原生版本98年后就不再更新了。2. 将文件分类放置到指定文件夹找到目录\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.283原创 2020-10-11 12:27:31 · 522 阅读 · 0 评论 -
c 编程中extern关键字 使用跨文件全局变量
我们知道,程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数之外定义的变量则称为外部变量,外部变量也就是我们所讲的全局变量。它的存储方式为静态存储,其生存周期为整个程序的生存周期。全局变量可以为本文件中的其他函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。然而,如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”,原创 2020-09-26 12:02:24 · 2256 阅读 · 0 评论 -
MFC 资源视图显示在另一编辑器中打开
问题如下图;解决办法:一般这种情况是打开了头文件中的resource.h造成的,关闭resource.h,在资源视图中重新打开即可。(双击.rc再双击)如图:原创 2020-08-07 13:00:55 · 1348 阅读 · 0 评论 -
c++ 疑难杂症 无法解析的外部命令
原因:1.可能是由于没有导入相应的外部依赖项或者库文件导致,可以首先检查项目-》属性中有,包含,附加依赖项有没有完整2.在头文件中和cpp文件中存在不匹配的函数名称,然后这个不匹配的东西还正好在主函数中调用了!(持续更新)...原创 2020-08-07 09:58:47 · 3559 阅读 · 0 评论 -
64位机器配置glut库
1.在C:\Windows\SysWOW64放2.在C:\Windows\System32放3.在D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib放4.在D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64放并重命名为glut64.lib5.在D:\Program Files (x86)\Microsoft Visual Stud原创 2020-08-06 20:16:38 · 580 阅读 · 0 评论 -
MFC的对话框中使用OpenGL绘图
我们在编写软件是总是会有自己的界面,当然利用C++就不得不和MFC打交道了,那么可视化界面通常就要用MFC的Dialog;OpenGL通常画图时会自己生成一个窗口,就如同OpenCV一样,但现在我想OpenGL把图画在对话框指定的位置上,列如,我想在以下对话框的左侧部分显示我要画的图,该怎么做呢?1、首先当然要设置好OpenGL的编程环境;2、新建一个基于对话框的工程,我选择VS studio平台;3、选着Project->add->class,添加一个新类,取名为...原创 2020-08-06 10:59:22 · 1521 阅读 · 0 评论 -
MFC中 使用共享的DLL库和使用静态链接库的区别
使用的是MFC应用程序的工程,工具的版本为VS2013,工程参数都是默认的,其中有一项设置叫做“MFC的使用”,默认设置是“在共享DLL中使用MFC”“无法启动此程序,因为计算机中丢失mfc120.dll。尝试重新安装改程序以解决此问题。”,看到这个问题我首先想到的就是动态链接库的事情,因为我使用的是VS2013正好使用的是12.0版本的库文件,所以说应该是目标机上没有这个库,当然可以手动下载这个库文件,添加至“C:\Windows\System32”目录,但是在程序开发工程中,你无法要求所有的用户转载 2020-08-06 10:55:27 · 708 阅读 · 0 评论 -
static_cast”: 无法从“void (__cdecl CImageView::* )(UINT)”转换为“void (__cdecl CWnd::* )(UINT_PTR)”
在写 MFC界面程序的时候在使用ON_WM_TIMER()的时候报类型转换的错误如下是解决方案提示错误在消息映射处:ON_WM_TIMER()。分析报错的是类型转换不一致导致的错误,所以上手修改,转到CImageView中找到消息函数的声明和定义:afx_msg void OnTimer(UINT nIDEvent);声明和定义的函数参数类型修改为afx_msg void OnTimer(UINT_PTR nIDEvent);编译成功。这些类型在低版本编译是没问题的,但高版本的.原创 2020-07-02 16:23:46 · 2682 阅读 · 0 评论 -
【MFC】应用程序类型:单文档、多文档与基于对话框
类型解释:单文档:记事本类程序的标准模式,有菜单栏、工具栏等,只能进行一份文档的操作,即不能同时在同一个应用程序中打开两个文件多文档:WORD类或浏览器程序的标准模式,可多个窗口显示不同的信息,进行不同的任务,有过个视图环境,可同时操作多个文件。多个文件共享同一菜单栏、工具栏等对话框:可方便的使用控件,所见即所得的编程,没有菜单栏、工具栏等怎样看出一个MFC应用程序是基于单文档、多文档还是对话框?1.运行应用程序观看,对话框一般没有菜单栏、工具栏等,单文档和多文档有,另多文档..原创 2020-07-02 15:02:32 · 796 阅读 · 0 评论 -
c++ jpeg图片压缩 程序计算熵编码
纯手写,jpeg压缩流程上传到资源资源下载#define _CRT_SECURE_NO_WARNINGS#define _USE_MATH_DEFINES#include <stdlib.h>#include <iostream>#include<vector>#include<math.h>#include<string>#include<fstream>using namespace std;int g.原创 2020-06-28 20:10:56 · 980 阅读 · 0 评论 -
C 库函数 - fread()
C 标准库 - <stdio.h>描述C 库函数size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)从给定流stream读取数据到ptr所指向的数组中。声明下面是 fread() 函数的声明。size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)参数ptr-- 这是指向带有最小尺寸size*nmemb...原创 2020-06-28 00:41:44 · 381 阅读 · 2 评论 -
北邮机试--98. IP数据包解析 99. 打印字符串
98. IP数据包解析时间限制1000 ms内存限制65536 KB题目描述我们都学习过计算机网络,知道网络层IP协议数据包的头部格式如下:转存失败重新上传取消转存失败重新上传取消其中IHL表示IP头的长度,单位是4字节;总长表示整个数据包的长度,单位是1字节。传输层的TCP协议数据段的头部格式如下:转存失败重新上传取消转存失败重新上传取消头部长度单位...原创 2020-04-15 13:35:27 · 198 阅读 · 0 评论 -
C++ 每次读取一行字符串输入记录
1. 面向行的输入:getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。cin.getline(Arr,20)//Arr为用来输入行的数组的名称; //20包括19个字符和1个空字符 2. 面向行的输入:get()与getline()的工作方式类似,接受参数相同,但get()并不再读...原创 2020-04-15 12:35:46 · 230 阅读 · 0 评论 -
北邮机试 -- 96\97 矩阵幂/二叉排序树
96. 矩阵幂时间限制1000 ms内存限制65536 KB题目描述给你一个n*n的矩阵,P,求其矩阵的k次幂,即Pk输入格式第一行,一个整数T(0<T<=10),表示要求矩阵的个数。接下来有T组数据,每组数据格式如下:第一行:两个数据n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,其中n表示...原创 2020-04-09 14:06:57 · 186 阅读 · 0 评论 -
float 与 double 的区别
1. 范围float和double的范e79fa5e9819331333366303137围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位) 8bits(指数位) 23bits(尾数位)double:1bit(符号位) 11bits(指数位) 52bits(尾数位)于是,float的指数范围为-1...原创 2020-04-08 15:15:45 · 38631 阅读 · 2 评论 -
dev c++ 打开项目管理窗口
Dev c++的左边项目栏和下边项目栏分别叫 “项目管理器”和 “报告窗口”正常的如下图消失的原因是通过缩放这两个窗口的时候将这两个窗口关闭了,如图想要再次打开 方法:点击“视图”如果是左边的“项目管理器”点击“浮动项目管理器”,然后点击叉号就可以了如果是下边的“报告窗口”就点击“浮动报告窗口”,但有时可能会很小,再拉大然后点叉号就行了这样就解决了所谓的左边和下边的项目...原创 2020-04-08 10:56:50 · 9582 阅读 · 0 评论 -
dev c++ 代码调试debug
举例来一道简单的题输入两个整数A, B 输出A+B的和数据保证输入的A和B都在int范围内既然是int就拿int变量存了,附带一段看似正确的代码#include <stdio.h>int main(){int a, b;scanf("%d%d", &a, &b);int c = a + b;pr...原创 2020-04-08 10:55:05 · 861 阅读 · 0 评论 -
C++数据类型占据多少个字节
1、整形:int、long2、字符型:char、wchar_t3、布尔型:bool4、浮点型:float、double5、指针一、整形 int占据操作系统一个内存单元的大小。long跟int相同 早先16位操作系统一个内存单元是16位,所以是2个字节;32位系统一个内存单元是是32位,所以是4字节;64位操作系统一个内存单元是16位,故占8个字节。...原创 2020-04-08 09:28:49 · 5291 阅读 · 0 评论 -
迪杰克斯拉单源最短路径算法
Dijkst...原创 2020-04-05 15:05:44 · 739 阅读 · 0 评论