![](https://img-blog.csdnimg.cn/20201209144803754.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
c++
文章平均质量分 59
选择了就是一条不归路啊
眉毛以下截肢
努力打怪升级,努力变强!(ง •̀o•́)ง
展开
-
多继承&vs查看类结构
类C里面可以重写所有继承到的虚函数(类A、类B里面的虚函数)类A有两个虚函数,类B重写了其中一个,类C重写了两个;可以看到类的继承与派生关系。原创 2023-10-18 20:18:41 · 239 阅读 · 0 评论 -
优先队列的第三个参数的实际含义,为什么less对应大顶堆,greater对应小顶堆;
因此,不难理解 less < 对应大顶堆了,当父结点小于子结点的时候,会进行交换,从而将大的值转换到父结点,从而堆顶就是最大元素了;priority_queue传入的第三个参数是仿函数,是将新插入数据与父结点进行比较,使用仿函数:if (com(_con[child] , _con[parent]))堆的本质是二叉树,堆排序就是将树的父结点与子结点进行比较、互换的结果;堆排序:就是将容器里面的数据按照堆特征进行排序;大顶堆,父结点比子结点大,所以堆顶是最大的;小顶堆,父结点比子结点小,所以堆顶是最小的;原创 2023-06-29 00:30:42 · 588 阅读 · 0 评论 -
记录一种CUDA常见错误情景:结果随机
最近需要将之前的CUDA优化代码复盘,得到每一种优化下的加速比,因此,每一次优化后需要对比C,CUDA的结果,赶巧不巧,遇上了这么一种情况:核函数功能 :核函数D_SDF1_SRC1_MultiChan需要在一个Block中完成多路的执行,因为可以共用数据,利用共享内存提供更快和更少次数的内存访问;其Block图如图所示:于是希望在每一行的Thread中取不同的常数,使用threadIdx.y作为标识:__global__ void SRC1Kernel_MultiChan(short *d_sr1原创 2021-12-14 13:31:34 · 2324 阅读 · 0 评论 -
宏定义统计语句执行时间
最近写毕业论文的程序,发现了一种更加优雅的统计时间方法,记录一下chrono主要利用<chrono>这个时间库来实现,里面包含三种时钟:system_clock: 起点是1970-01-01 00:00:00 UTCsteady_clock: 起点是系统启动时间,一般用于得到时间间隔high_resolution_clock:高分辨率的版本本次使用system_clockcodeRD.h#include<iostream>#include <chrono原创 2021-11-27 23:53:35 · 622 阅读 · 0 评论 -
FFTW cuFFT的使用记录
好久没写点什么东西了,今天饶有兴趣,总结一下FFTW、cuFFT的调用方法。一些知识点的回顾弄懂了FT、DTFT、DFT三者之间的关系傅里叶变换(Fourier Transform,FT),表示能够将一定条件的某个函数表示为三角函数或者它们的积分的线性组合。从连续域到连续域。离散时间傅里叶变换(Discrete-time Fourier Transform,DTFT),表示将以离散时间nT作为变量的函数变换到连续频域,频谱会周期延拓。离散傅里叶变换(Discrete Fourier Transfo原创 2021-10-31 20:55:57 · 1811 阅读 · 10 评论 -
十大排序算法归纳总结
倒逼法厉害了,在简历上面写了熟悉排序算法,所以对于常用的排序算法一定要手写一遍,噗!~原创 2021-08-04 16:31:28 · 108 阅读 · 0 评论 -
查缺补漏:智能指针、常成员函数、常量指针,指向常量的指针
学习能力很重要,这也是为什么,面试时考察cpp,进去后让你写go java原创 2021-06-27 19:46:32 · 263 阅读 · 1 评论 -
~查缺补漏~ [SCons /namespace /
目录SCons命令空间namespaceSCons简书总结官方文档 Python写的自动化构建工具,类似于GNU make,实际中项目的代码量经常动辄几百万行,编译一次需要很久的时间,所以这种自动化构建工具就出现了,其实就是代替了我们手动去使用命令行编译代码,然后,遇到代码文件没有改动的情况下,就只重新编译发生了变化的文件,可以极大地缩小编译的时间。 scons由Sconstruct作为入口,控制如何进行编译操作,相当于是一个python文件,遵从python的语法。Program("hel原创 2021-06-20 17:15:16 · 121 阅读 · 0 评论 -
取余还在用%?
最近碰到了一种取余的方式,采用位运算:if(k % 2 ==1) //Badif(k & 0x01) //Good刷一道题目,试一试效果,可能不太严谨class Solution {static bool camp(int a,int b){ return abs(a)>abs(b);}public: int largestSumAfterKNegations(vector<int>& nums, int k) {原创 2021-06-10 23:48:53 · 93 阅读 · 0 评论 -
static的作用?
对于全局变量,改变它的作用域,使其只能在本源文件里面使用最开始,在头文件里面定义一个全局变量,然后在main里面,extern 声明,结果报错了//Header.h#pragma onceint num = 0;//Header.cpp#include"Header.h"//main.cpp#include <iostream>using namespace std;extern int num;int main(){ cout << num <.原创 2021-05-31 21:30:08 · 81 阅读 · 0 评论 -
总结:回溯法-组合问题
刷题总结回溯法组合问题力扣77回溯法跟着一个很厉害的**博主(代码随想录)**的文章进行总结。回溯本质上还是遍历搜索,可以用于解决组合、分割、子集、排列、棋盘问题等等,里面有一句总结的非常到位:for表示横向搜索,递归表示纵向搜索;组合问题力扣77典型的组合问题,可以采用典型的解决方法;思路就是,固定一位,然后在余下的里面固定另一位;记录一下这里的一个错误,就是在最后退出的时候,最开始没有想清楚,手动clear了ans,导致了越界错误;因为我们是首先挑选一位放到ans,然后在余下的数里面原创 2021-05-31 20:43:55 · 728 阅读 · 0 评论 -
归并排序、求逆序对(offer51)
本题求数组中的逆序对,很自然的想到了两层for循环,然而困难题,一定超时!在评论区看到了一种利用归并排序“治”的过程,顺带将逆序对求出来了,记录一下,顺便将归并排序和快排做一个比较。目录归并排序cpp实现与快速排序进行比较快速排序cpp实现归并排序正如图所示,归并排序是将原数组不断的划分,然后开始合并,有点二分法的意思;到只剩一个元素的时候,开始合并,将小的有序数组合并为大的有序数组恰好,这个合并的时候,如果加一个比较的步骤,就可以求出逆序对的个数,例如:原本的数组是:【7,3,2,6,0,.原创 2021-05-28 15:10:13 · 113 阅读 · 0 评论 -
又学到一种结构:前缀树!
前缀树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 正好今天力扣每日一题遇上了,查缺补漏,安排上! 个人对前缀树的理解就是:不多写一个字母!!!比如你要存储word和world,那么最终集合里面在r的后面就开始分叉,一条路指向d,另一条路指向ld;实现分析假如我们存储的是原创 2021-04-14 21:40:57 · 126 阅读 · 0 评论 -
lambda表达式的入门学习
之前刷题的时候,一直会看见自定义sort的做法,一般的形式是,重新写一个bool的函数,然后作为参数传递给sort函数,但有时候,也会看见,直接传进去一个lambda表达式,比如以下的形式sort(myStr.begin(),myStr.end(), [](string &a,string &b){ return (a+b)>(b+a); });文章目录lambda表达式的一般形式捕获列表参数列表返回原创 2021-04-13 21:18:57 · 138 阅读 · 0 评论 -
sort的自定义使用
目录sort的自定义compare用法官方提供的四种comp比较函数结构体的比较1 重写比较函数comp2 结构体内重载运算符3 结构体外重载运算符测试sort的自定义compare用法 之前想要降序排列的时候,总是首先sort,然后reverse,感觉很鸡肋,今天从力扣评论区发现,原来sort可以直接逆序使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高;传入的参数类型和需要排序的数据类型一致;functional提供了一堆基于模板的比较函数对象:equal_t原创 2021-03-31 11:02:23 · 485 阅读 · 0 评论 -
private public protected 的区别总结
protected:可以被派生类访问,不能被用户代码访问;private:只能被类成员和友元访问;public:访问自由;友元:可以访问private成员;然后 ,继承的时候,遵循这样的一个规律:也就是:最高机密privateprotected:继承的类之间的机密,(可理解为供应商与生厂商之间的关系)public:大家都可以直接接触到;But;一旦将一个类在另外一个类里面,使用friend 声明后,秘密将不再是秘密;#include<iostream>#include<原创 2021-01-06 16:22:52 · 215 阅读 · 0 评论 -
c++里面的函数模板问题,意外收获,main函数只能返回int?
c++ 11标准添加了一项:main函数必须返回int?以前没有注意这个问题,今天想要换一个环境,使用vscode的时候,发现void main 怎么都不通过,于是上网搜索到了这个答案:原来 The definition void main( ) { / … / } is not and never has been C++, nor has it even been C.2.使用引用作为形参,可以改变实参的值以前,为了通过函数改变实参的值,总是使用指针来指向实参的地址,然后改变,今天发现,c.原创 2020-10-22 21:17:32 · 273 阅读 · 0 评论 -
力扣笔记:判断链表是否成环以及返回入环的第一个节点
从评论区看到的一个思路:1.首先快指针一定比慢指针多走n圈以上(n>=1)2.在慢指针走完第一圈之前,快指针一定会追上慢指针相遇的时候,慢指针走过的节点是:x+y;快指针走过的节点是x+n(y+z)+y;所以,2(x+y)=x+n(y+z)+y; x=z+(n-1)(y+z)也就是说:分别从头节点和相遇节点处出发的两个节点(temp1、temp2),每次移动一个节点,一定会在入环节点处相遇。且移动的节点数:temp1是:x,temp2是:z+(n-1)(y+z)顺便总结一下是否成环的判断.原创 2020-08-24 20:30:35 · 239 阅读 · 6 评论 -
几种数据类型之间的区别以及表示的数据大小范围总结
最近遇到的大多数bug几乎都是数据过大,产生的错误,因此写一篇博客总结一下常见的几种数据类型他们的表示范围short2个字节(32位,64位均是2个字节),16位,-215, 215-1; -32768~32767int4个字节(32位,64位均是4个字节),32位,所以表示的有符号数的范围是-231, 231-1;也就是-2147483648~2147483647;也就是2G左右;long32位4个字节 ,-231, 231-1; 2G,和int一样;64位8个字节 ,-263,263-1原创 2020-08-10 15:53:14 · 3004 阅读 · 0 评论 -
fwrite 从什么位置开始写数据
最近需要不断地往一个文件里面写数据,才发现fwrite每写完一次数据,文件指针停留在文件末尾,再一次写数据,是可以连续起来的;#include<iostream>using namespace std;int main(){ //使用fwrite不断地向一个dat文件里面写数据; FILE *dataA; errno_t err; err = fopen_s(&dataA,"D:/vs/dataA.dat", "wb"); if (err != 0) {原创 2020-08-07 14:02:11 · 1035 阅读 · 0 评论 -
C++的几种二维数组申请与释放操作
最近需要写一个接口,函数每执行一次,需要存储448路的数据,执行第二次,仍然存储448路数据,麻烦的是,两次448路数据需要合为一个448路,这就要求,给一个二维数组,第一次直接存储,第二次,偏移一定的长度后再存储;了解到三种方法可以实现:1,new deleteint main(){ //1,new delete 4*3的矩阵 int m = 4, n = 3; //申请 int **array_new = new int *[4]; for (int i = 0; i < 4原创 2020-07-15 15:45:01 · 645 阅读 · 0 评论 -
float可以表示的最大整数,导致的一系列原地去世错误
在敲这几行字的时候,我已经要’‘吐血’'了,原来折磨我无数个日日夜夜的bug竟是float可以表示的最大数范围限制 事情是这样的,2020年7月6号晚23:30,当胡某收到了项目反馈后,开始自己的找bug之旅; 第一张采用cos计算,第二张采用cosf计算,结果第二张的波形出现了幅度衰减,似乎有点规律,于是乎,我以为程序存在一定的逻辑错误; 可是我把结果输出,发现了一个问题,为什么相同的数据,cos与cosf 的差距这么大呢? 难道我已经遇到了玄学? 一语惊醒梦中人! 原来我这里的弧度原创 2020-07-08 21:05:45 · 1438 阅读 · 0 评论 -
vs存储dat文件,在matlab读取进行操作
最近,需要验证c与matlab进行的同一个下变频,下采样操作结果是否一致,于是,需要将c处理后的数据存储下来,在matlab读取,发现自己对c读取文件的操作并不是很熟悉,于是,对此,进行一番总结。...原创 2020-05-09 16:31:18 · 1915 阅读 · 2 评论 -
vscode C/C++环境配置
最近使用vscode调试c文件出现了问题,总是cannot find the input file,经过一番努力,终于发现了问题所在需要我们配置的json文件有两个:launch.json 、tasks.json这里的逻辑是:gcc用于生成可执行文件exegdb用于调试,调试前需要有可执行文件exe调试的时候,如果没有可执行文件,就会通过preLaunchTask来生成exe;tasks...原创 2020-03-06 09:36:55 · 205 阅读 · 0 评论 -
运行程序缺少MSXVCP140D.dll VCRUNTIME140D.dll ucrtbased.dll 的解决方案
下载文件,放入对应的地方。https://pan.baidu.com/s/1b_aveXP-BYrm8el047UeAA 1x39原创 2019-10-25 19:49:59 · 1495 阅读 · 0 评论 -
接上一篇:动态链接库里的函数在子函数里面的使用
至此,我们已经弄明白了如何从DLL里面将函数导出来,效果如下:Here is the question:如何在自定义的子函数里面去使用导出的函数呢?其实,解决的方法很简单,我们把函数类型设置为全局的,然后在需要使用导出函数的地方传入一个函数类型的指针int testDllFunc(addFunc thisadd){ int a = 4, b = 5; int c; thisadd(a, b, c); return c;}例如,我要在testDllFunc 里面调用我刚刚导出的a原创 2020-12-09 14:34:12 · 125 阅读 · 0 评论 -
在c的基础上添加对cuda编程的支持
链接器->输入->附加依赖项-> 添加cudart.lib项目右键生成自定义,选择cuda对应的版本更改cu文件的编译器设定为CUDA C/C++至此,一般就可以正常运行cuda程序了,但是,有的用户在安装完cuda后,没有在系统的环境变量里面配置与cuda相关的几个路径(如下图),可能按照以上的步骤配置完后,仍然会出现红色波浪线的错误提示(有时候,可以正常运行,但是还存在波浪线,是因为vs认为没有找到对应的lib和h的位置)此时,继续人为的增添库文件和头文件的..原创 2020-12-07 20:09:36 · 212 阅读 · 0 评论 -
在空调开得过热的房间里面,摸鱼写下的动态规划碎碎念
动态规划: dynamic programming名字看起来很高大上,也不知道动态在哪里,做了一些题目,看了一些解释,感觉就是1 减少重复计算,2 有点递归的味道,首先从后往前推出状态方程,然后从前往后写出dp数组3 也有点高中数学归纳法的味道,新的值是由旧的值得到的今晚做的是 力扣 Offer 46. 把数字翻译成字符串记录一下这一题的思路,虽然都是评论区老哥老姐的杰作,但是看懂了,自己也重新码了一遍,顺带更多的理解动态规划的一般套路。给定一个数字,我们按照如下规则把它翻译为字符串:0 翻原创 2020-12-03 21:04:19 · 151 阅读 · 2 评论 -
注意:哈希映射存储字符的顺序与压入的顺序不一样!!
例如:我想要将“leetcode”存放到哈希映射里面,那么存储顺序应该是 l e t c o d;但是,输出的顺序是 d o l e t c#include <iostream>#include <unordered_map>using namespace std;int main(){ unordered_map<char, int> HashMap1; unordered_map<char, int> HashMap2;原创 2020-11-26 10:33:39 · 140 阅读 · 0 评论 -
记录: 迭代器不能作为数组下标
for (auto j = A.begin(); j != A.end(); ++j) { cout << A[j]<< " "; }上面这种是错误的,因为j的类型是iterator,而数组的下标必须是整常型,或者字符(会默认转为对应ASCII值) for (auto i : A) { //范围for得到的是int值 cout << i << " "; //cout << *i << " "; //错误的 .原创 2020-11-25 09:54:32 · 181 阅读 · 0 评论 -
已解决:在MFC程序里面利用黑框打印输出
话不多说,先上图:添加头文件到Dlg.cpp里#include <io.h> #include <fcntl.h>#include <iostream>#include <stdio.h>using namespace std;添加Console的初始化函数void InitConsoleWindow(){ AllocConsole(); HANDLE handle = GetStdHandle(STD_OUTPUT_HAN原创 2020-11-17 17:02:45 · 586 阅读 · 0 评论 -
告诉你atoi()和stoi()的区别总结:
atoi():stoi():看了很多的都说以下两点:二者都是string字符处理函数,不同的是,atoi()输入必须是string.c_str(),没有范围检测;stoi()的输入直接是Sting,有范围检测,超过int范围,会返回error;参考1:参考2: 写的很详细,有代码输出证明但是,通过搜索,我们可以看出,atoi是对c语言的继承,stoi才是c++里面string类的标准转int;最后,推荐大家平时搜索上这里,官方的查询函数和类...原创 2020-11-16 11:00:32 · 792 阅读 · 0 评论 -
STL容器之list的用法总结,附上程序
一直在看数据结构的视频,也在力扣上面刷了一些相关的题目,但是对于c++ 自带的list却从没有正儿八经使用过,所以,今天用一两个小时的时间,把list的用法总结一下,算是扫清一个知识疑惑。一、注意事项list是双向链表,可以在常规时间内在list的任意位置插入或删除元素,反之,不能像数组一样直接使用下标[n]来获取元素;使用的时候,添加头文件 #include二、list函数介绍...原创 2020-11-04 20:55:31 · 306 阅读 · 0 评论 -
已解决:1个无法解析的外部命令,无法解析的外部符号_WinMain@16...
最近遇到了以下的问题,新建的工程,怎么都运行的有错误,如下图:**原因:**新建的项目类型错误,新建的是Win32项目,入口函数是WinMain,而我的主函数是main,应该是Win32控制台项目修改方法:更改两处:项目属性->C/C+±>预处理器->预处理器定义-Windows改为-CONSOLE项目属性->链接器->系统->子系统完美解决哈哈哈哈哈哈哈哈哈...原创 2020-10-27 13:59:37 · 4041 阅读 · 2 评论 -
动态链接库的生成与使用(动态、静态调用)附上一种常见错误。。。
本篇内容总结了动态链接库的生成与使用。一.动态链DLL接库生成首先,新建Win32 DLL 空项目添加头文件和源文件,这里写一个printMAX作为测试//myDll.h#pragma onceextern "C" _declspec(dllexport) void printMax(int, int);//myDll.cpp#include<iostream>using std::cout ;using std::endl;extern "C" _decl原创 2020-10-26 19:36:05 · 378 阅读 · 0 评论 -
动态链接库 DLL报内存错误,生成目录没有lib文件
测试动态链接库的时候,运行报错,报出了内存的错误,百思不得其解,最终发现了错误所在;原来是,定义的时候,也需要在函数前面加上extern “C” _declspec(dllexport)更改过来后,程序就运行成功了...原创 2020-10-26 18:51:35 · 606 阅读 · 0 评论