C++相关内容
相关的C++知识要点
LV小猪精
努力缩小距离
展开
-
或的方式触发多个条件
【代码】或的方式触发多个条件。原创 2023-08-22 15:43:10 · 180 阅读 · 0 评论 -
typedef重复定义解决方法
如果头文件sm_system.h和math.h中均包含"typedef xxxx float_t"语句,那么使用如下的头文件包含方法:原创 2023-07-11 21:05:51 · 1238 阅读 · 0 评论 -
VS多处理器编译提高编译速度
开启多处理器编译能够提升编译速度,特别是当工程巨大时候,编译速度往往很慢,打开多处理器编译效果明显,下面给出设置和对比。原创 2023-07-06 10:57:08 · 980 阅读 · 1 评论 -
windows创建窗口
一般来讲,要绘制或者渲染目标物体首先需要创建窗口,通常需要配合渲染API(opengl directx 等)来实现。这边主要介绍的是windows上最基本的窗口创建方式,抛弃MFC等内部创建调用的方式,通过最底层的调用来实现窗口的创建。原创 2023-01-10 21:44:33 · 955 阅读 · 0 评论 -
VS在输出窗口显示信息
VS输出窗口的信息传给函数,函数内部调用系统函数OutputDebugString(),就可以把调试信息打印到输出窗口。原创 2022-11-01 09:54:58 · 1368 阅读 · 0 评论 -
n维顶点模板类
【代码】n维顶点模板类。原创 2022-09-17 16:48:40 · 111 阅读 · 0 评论 -
Win32窗口
代码】Win32窗口。原创 2022-07-25 10:27:09 · 199 阅读 · 0 评论 -
C++和Python Java的区别
C++和Python Java的区别原创 2022-06-30 18:11:42 · 3657 阅读 · 0 评论 -
VS2019CPU/内存诊断功能
在代码运行过程中,有时候会出现内存泄漏,内存/CPU占用过高等情况,这些情况的出现十分影响代码的运行效率和鲁棒性,所以有必要对代码进行诊断和优化处理。这边使用VS2019自带的代码诊断工具进行检测。具体的操作方法是先在要诊断的代码部分添加断点或者让程序完整运行起来(最好是能够循环)运行代码(这边以绘制三角形为例子,屏幕是不断在刷新的)可以看到内存/CPU的运行状况这边以CPU使用率为例子,内存的占用查看也一样。选择一段或者是整段运行过程点击CPU使用率,再点击全部中断即可查看CPU占用情况CPU占用情原创 2022-06-16 12:25:05 · 7592 阅读 · 0 评论 -
c++实现2048小游戏
C++实现2048界面展示效果:#include <easyx.h>//需要包含这个库#include <string.h>#include <map>#include <sstream>#include <time.h>#include <conio.h>#include <graphics.h>#pragma comment( lib, "MSIMG32.LIB")// 方块的状态enum原创 2022-05-10 21:33:37 · 929 阅读 · 0 评论 -
对象数组初始化
对象数组初始化问题为什么使用对象数组遇到的问题解决方法为什么使用对象数组为了满足用户创建同一个类的多个对象。遇到的问题应使用“{…}”初始化聚合对象不存在默认构造函数#include<iostream>using namespace std;class point{public: //point(){}; point(float x,float y,float z){ m_x = x; m_y = y; m_z = z; }; float m_x, m原创 2022-04-23 10:28:51 · 2702 阅读 · 0 评论 -
点集的读入与输出操作
在MFC框架里实现从文件中读取点集1. 点集读入操作实现代码:2.点集输出操作实现代码:1. 点集读入操作实现代码:读入点集数据(ID, (x,y,z))void Readpoint(){ CString filter = "(*.txt)|*txt|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL); if (dlg.DoModal原创 2022-04-20 09:39:06 · 260 阅读 · 0 评论 -
二维数组快速排序sort
二维数组快速排序sort1. 使用比较函数cmp2. 使用lambda表达式1. 使用比较函数cmp#include<iostream>#include<vector>#include <algorithm>using namespace std;bool cmp(vector<int>&a, vector<int>&b){ return a[0] > b[0];}void main(){ vecto原创 2022-04-15 11:13:24 · 2167 阅读 · 0 评论 -
csdn Markdown样式
CSDN markdown样式文字样式段落格式图片样式分享一些表情文字样式👉字体样式<font face="宋体">你真帅</font><font face="黑体">你真帅</font><font face="微软雅黑">你真帅</font>你真帅你真帅你真帅👉字体颜色<font color=#FF0000> 你真帅 </font><font color=#32CD32> 你原创 2022-04-02 22:15:15 · 1379 阅读 · 0 评论 -
原始三维格子点内部实现小范围格子重建
在原始N*M的数组A中(该数组可以理解为规则格子,各维度的增量均为常数)内部构建一个比其小的数组B,要求数组B与A格子点重合,如图所示:原创 2022-04-01 16:15:11 · 196 阅读 · 0 评论 -
CPU和GPU及CUDA入门基础概念
CUDA入门基础概念1 CPU与GPU的关系1.1 CPU与GPU各自特点2 一些零碎的CUDA入门知识2.1 函数修饰符2.2 线程、线程快、线程格2.3 什么是核函数2.4 常用的GPU内存函数2.5 GPU内存分类1 CPU与GPU的关系1.1 CPU与GPU各自特点CPU(中央处理器) 需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。GPU(图形处理器) 面对的则是类型高度统一的、相互无依赖的大规模数据和不原创 2022-03-29 21:44:32 · 2152 阅读 · 0 评论 -
VS+git+CMake实现代码运行
CMake遇到的问题获取github 仓库中的代码CMake 基本步骤CMake 遇到问题1 没提供xxx.cmake 在路径中获取github 仓库中的代码使用git实现代码拷贝,这样会比直接复制下载得到的更全具体的做法如下:复制github代码仓库的https;打开git,使用 git clone命令,将复制的代码粘贴,快捷键为shift+insert(注意:不是ctrl+v);等待克隆完成,该过程可能存在等待时间较长或者失败的情况,可能和网络有关,多尝试几次。克隆完成结果如图所示:原创 2022-03-28 20:19:42 · 3118 阅读 · 0 评论 -
八叉树的相关内容
根据点云数据构建八叉树#pragma once#include <iostream>#include <vector>#include <math.h>class Octree {public: Octree() {} ~Octree() { destory(octree); } struct Point { double x; double y; double z; void setPoint(double x, double y原创 2022-03-27 21:59:33 · 375 阅读 · 0 评论 -
VS检查内存泄露的方法
Visual Studio检查内存泄露方法_CrtDumpMemoryLeaks函数Visual Leak Detector(VLD)插件VS2015内存快照_CrtDumpMemoryLeaks函数系统自带的 C Run-Time (CRT)库可以帮助我们检测内存泄露#include <iostream>using namespace std;#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__,原创 2021-09-26 14:00:37 · 1447 阅读 · 0 评论 -
入栈,出栈顺序
入栈,出栈顺序在刚开始做到栈的出栈入栈时还是蛮有疑惑的,搞不清楚出入栈的排序重新整理之后终于明白,具体如下所示:例如有一个为A B C D E的顺序排列,要问该排列的出栈的情况,实际上在进行出入栈时并不要求全部入栈再全部出栈,可以先进几个(A B入栈)先出几个(B A出栈)然后再进行其他的,用图片表示会更清楚这里给出B A C D E的出栈情况首先A B 入栈,接着 B出栈,A出栈,然后C D E入栈,依次出栈,得到B A E D C...原创 2021-08-11 15:02:34 · 4310 阅读 · 0 评论 -
cmd 运行main函数
Cmake 文件大多数由控制台程序运行,由于main函数内的参数一般为int main(int argc,char **argv)这里面的argv是用来传递参数的,假如你编译成的文件名是test.exe,那么在命令提示符下可以通过test.exe12 34来向程序传递参数,这时两个参数就会传递到字符串数组argv中,注意此时实际传递了三个参数,第一个参数是文件名,第二个参数是12,第三个是34,而argc就是参数个数。int argc, char **argv 用于运行时,把命令行参数传入主程序。原创 2021-08-09 16:53:41 · 1271 阅读 · 0 评论 -
坐标位置实时显示
MFC程序实时显示鼠标坐标位置如图所示附上代码:void CVoronoi2View::OnMouseMove(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CString str; CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;//要求包含MainFrm.h头文件 CStatusBar *m_StatusBar = (CStatusBar*)G原创 2021-07-16 19:20:03 · 404 阅读 · 0 评论 -
操作符重载一些细节
操作符重载一些注意事项不能重载操作符只在类的成员函数中重载的操作符只在友元函数中重载的操作符补充不能重载操作符"."(类成员访问运算符)" .*"(类成员指针访问运算符)"::"(域运算符)"siezof"(长度运算符)" ?:"(条件运算符)只在类的成员函数中重载的操作符=(等号)[](下标访问)()(括号)->(指针访问)只在友元函数中重载的操作符<< 和 >>(输出输入流)原因:如果是重载双目操作符(即为类的成员函数,就只要设原创 2021-07-07 17:02:42 · 85 阅读 · 0 评论 -
TCP/IP基础知识
TCP/IPOSI七层模型(Open System Interconnect)二级目录三级目录TCP/IPOSI七层模型(Open System Interconnect)OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。二级目录三级目录TCP/IP...原创 2021-06-22 15:59:15 · 221 阅读 · 0 评论 -
树的一些题目持续整理
树树的最大深度合并二叉树树的最大深度输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。int maxDepth(TreeNode* root) {if(root==NULL){ return 0;} return max(maxDepth(root->left),maxDepth(root->right))+1; }合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上原创 2021-06-21 08:40:19 · 66 阅读 · 0 评论 -
C++四种强制转换
c++类型转换static_cast(静态类型转换)dynamic_cast(动态类型转换)const_cast(去const属性)reinterpret_cast(不相关类型的转换)static_cast(静态类型转换)基本语法:目标类型=static_cast<目标类型>(源类型)用于基本数据类型之间的转换把空指针转换成目标类型的空指针把任何类型的表达式类型转换成void类型用于类层次结构中父类和子类之间指针和引用的转换。这边主要讲加粗的这两种情况以及转换的安全性//语法原创 2021-06-20 22:15:26 · 406 阅读 · 0 评论 -
深浅拷贝问题
指针释放两次再讲深浅拷贝之前先谈一谈如果对开辟内存的指针同时释放两次会发生什么情况int *p = new int(10);//堆上开辟内存 delete p;//释放完后成为野指针 delete p;//泄漏显然内存发生了泄漏,程序崩溃深浅拷贝在一个类中如果类中的成员变量不为指针时,不在堆上开辟内存,不会触及深浅拷贝问题,不需要担心深浅拷贝。如下代码所示:class B{public: B() { } ~B() { } int p;};类内在写指针并且开辟内存的原创 2021-06-15 16:42:21 · 131 阅读 · 2 评论 -
c/c++链表学习
链表学习持续更新这边设置链表的节点,里面包含两个信息分别是数据域(可以用自己写的类或者基本数据结构,为了简便这边直接使用基本数据类型)和指向下一节点的指针。struct SeqList{int data;SeqList *next;};1.首先是创建链表SeqList *creatlist(int n){ SeqList* head = new SeqList; head->data = 100; SeqList *p = head; for (int i = 0; i &l原创 2021-06-12 21:47:05 · 102 阅读 · 1 评论 -
设计模式——单例模式
为什么单例模式中的成员函数都是静态的?你只要弄明白单例模式是如何实现的,就能从本质上理解这个问题;单例模式实现过程如下:首先,将该类的构造函数私有化(目的是禁止其他程序创建该类的对象);其次,在本类中自定义一个对象(既然禁止其他程序创建该类的对象,就要自己创建一个供程序使用,否则类就没法用,更不是单例);最后,提供一个可访问类自定义对象的类成员方法(对外提供该对象的访问方式)。直白的讲就是,你不能用该类在其他地方创建对象,而是通过该类自身提供的方法访问类中的那个自定义对象。那么问题的关键来了原创 2021-06-10 10:20:45 · 76 阅读 · 0 评论 -
const成员函数
const成员函数 const修饰的类成员函数称为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。如下图所示:左图的const实质上相当于修饰了成员函数内所隐含的this指针,在该成员函数内部的成员变量均不可做任何修改。(可读不可写)const修饰类的对象和成员函数请思考下面的几个问题:const对象可以调用非const成员函数吗?不可以,因为const修饰的对象为只读类型,若调用非const非成员函数,属于权原创 2021-06-03 09:45:12 · 563 阅读 · 1 评论 -
STL三角网格模型体积计算
float STLVolume(){ float vols = 0; for (int i = 0; i < Tmesh->faces.size(); i++) { vec p1 = Tmesh->vertices[Tmesh->faces[i][0]]; vec p2 = Tmesh->vertices[Tmesh->faces[i][1]]; vec p3 = Tmesh->vertices[Tmesh->faces[i][2]];.原创 2021-05-15 11:06:18 · 1359 阅读 · 0 评论 -
建立二叉树
一颗二叉树创建结点typedef struct node{ int data; node *lchild; node *rchild; node() :lchild(NULL), rchild(NULL){}}Tree,*tree;建树tree bulid(tree root, int val){ if (root==NULL) { root = new Tree; root->data = val; } if (val<root->dat原创 2021-05-09 10:58:31 · 104 阅读 · 0 评论 -
指针传参的深入思考
对指针传参的深入思考,很重要的一点还是需要看指针是否指向新的地址1.如果指向新的空间,那么对形参处理后不会影响实参,即参数没有传回,因为实参的指针地址和形参指针的地址不同,对不同空间操作怎么会一样呢?2.如果只是改变形参指针指向的内容,即形参的地址与实参保持一致,那么实际是对同一片空间操作,形参改变会传给实参。总之一句话:需要看形参是否指向新的地址最后附上代码以便理解:情况一:pp的值仍为10;void func(int *p){ int a = 2; p = &原创 2021-05-07 20:08:28 · 119 阅读 · 1 评论 -
十大经典排序算法
十大经典排序算法根据算法的时间空间复杂度列出以下10种排序算法,其中蓝色底的为稳定排序,绿色底的为不稳定排序。先谈一谈稳定性:稳定性简单来讲就是考虑排序后值相同的元素和排序前是否保持一致(如排序前a1和a2值相同,排序后仍是a1在前a2在后)注:希尔排序时间复杂度在O(nlogn)~O(n2)之间根据时间复杂度来划分成三小类排序1.时间复杂度为O(n2)1.1.冒泡排序(Bubble Sort)简单的思想:数组中相邻元素两两比较[以左边大为例子,交换两者的位置];每一次.原创 2021-05-05 15:07:13 · 13849 阅读 · 0 评论 -
三维空间点到线段的距离
点到线段的最短距离与点到直线的最短距离存在区别,求点到线段的最短距离时要考虑参考点P沿线段方向的投影点Q是否在线段上如图所示:点到线段的最短距离如下图所示:解决点到线段的距离可以用面积法等,本文使用的是矢量的方法 vec line_vec = B - A; //AB vec point_vec = - A; //AP float project_angle = line_vec DOT point_vec; if (project_angle <= 0原创 2021-04-22 15:50:37 · 1812 阅读 · 0 评论 -
内存四区的深入学习
内存四区 代码区 写的代码,各种函数 全局区 主要的数据有:全局变量、静态变量、常量(字符串常量) 栈区 形象表达犹如客栈,客人进出不需要打理房间,由编译器自动分配释放)(存放函数的参数值、返回值、局部变量)栈的分配由高地址向低地址 堆区 动态分配内存,犹如自己的家,需要主动分配和释放内存,当程序结束由操作系统回收)使用new,malloc等手动开辟的内存,堆的分配由低地址向高地址原创 2021-02-14 21:45:22 · 106 阅读 · 0 评论 -
c++代码运行时间测试
测试代码运行时间(以秒为单位)使用高精度时控函数QueryPerformanceFrequency()和 QueryPerformanceCounter()具体实现如下:LARGE_INTEGER frequency, start, finish;//测试运行时间QueryPerformanceFrequency(&frequency);QueryPerformanceCounter(&start);//func()待测试的代码段QueryPerformanceC...原创 2021-02-06 20:20:01 · 161 阅读 · 0 评论 -
MFC图片保存
MFC保存图片添加事件处理程序于view类中代码如下:void CVoronoi2View::OnFileSaveAs(){ CClientDC dc(this); CRect rect; //GetClientRect(&rect); //获取画布大小 rect.left = 0; rect.right = boxlength;//boxlength为宏定义 rect.top = 0; rect.bottom = boxwidth; HBITMAP hbitmap原创 2020-10-04 14:59:25 · 2776 阅读 · 2 评论 -
关于图算法的整理DFS,BFS,Dijkstra,Prim代码
图邻接矩阵与邻接表(两者皆可用来表示有向图和无向图)创建一个基类graph#pragma once#include<iostream>#include<vector>#include <map>#include <string>#include <functional>#include<algorithm&...原创 2020-02-25 16:24:55 · 275 阅读 · 0 评论