C++
COSummer
生物医学小硕一枚,现从事医疗软件研发
展开
-
三维空间最短距离以及点到直线的映射点
三维空间最短距离以及点到直线的映射点原创 2023-06-02 09:35:00 · 409 阅读 · 0 评论 -
vtkDICOMImageReader 读取dicom异常的解决方法
vtkDICOMImageReader 读取dicom异常的解决方法原创 2023-05-22 12:48:38 · 541 阅读 · 0 评论 -
查找一组近似球体点的中心
查找一组近似球体点的中心原创 2023-05-19 12:27:22 · 85 阅读 · 0 评论 -
判断一组点是否可以近似成一个球体
判断一组点是否可以近似成一个球体原创 2023-05-19 12:25:53 · 84 阅读 · 0 评论 -
mlpack 训练随机森林分类模型,并保存、加载网络,预测结果
mlpack 是一个C++的机器学习库,它重点在于其扩展性、高速性和易用性。它的目的是让新用户通过简单、一致的API使用机器学习,同时为专业用户提供C++的高性能和最大灵活性。他的性能超出大量类似的机器学习库,如WEKA、Shogun、MATLAB、mlpy及sklearn以下代码示例了mlpack 训练随机森林分类模型,并保存、加载网络,预测结果#include "mlpack/core.hpp"#include "mlpack/methods/random_forest/random_for原创 2020-11-27 18:19:46 · 2231 阅读 · 1 评论 -
获取某一目录下所有文件夹名,返回vector「string」
vector<string> listFiles(const char * dir){ vector<string> FolderNames; HANDLE hFind; WIN32_FIND_DATA findData; LARGE_INTEGER size; hFind = FindFirstFile(dir, &findData); if (hFind == INVALID_HANDLE_VALUE) { cout << "Faile.原创 2020-07-08 10:52:34 · 297 阅读 · 0 评论 -
C++ 实现遍历文件夹下所有文件,并将子文件夹名存入vector 中,适用于Windows
#include <iostream>#include <cstring>#include <windows.h>#include<vector>#include<string>using namespace std;const char * InputFileName = "D:/NCCT_CTA_ASPECT_anonymized/*.*";vector<string> listFiles(const char.原创 2020-05-27 15:27:20 · 746 阅读 · 0 评论 -
C++ 多线程实现
为了更好的实现并行运算,可以采用多线程,多线程的初始运行函数有三种传参方式,和普通函数一样,分别是值传递、引用、指针。当涉及多个线程同时修改某一共享数据时,为了防止数据破坏,可使用线程同步,以下是实现的一个例子#include <thread> #include <mutex>struct param{ int nMaxIndex; ....};...原创 2020-04-28 19:22:53 · 773 阅读 · 0 评论 -
CUDA与C++混合编程
CUDA与C++ 混合使用的目的是GPU加速C++程序,Cuda通过C语言嵌入到C++中步骤如下:通过性能分析工具(如vs)找到CPU程序最耗时的多个地方,并确定耗时程序的入口函数将CPU函数进行清理1.将循环部分的代码找出来。2.将函数内所用到的数据从C++类结构变成C的结构体。3.标准化输入输出,保证其为C结构,并与原程序的数据进行无缝对接。4.将循环内部的函数也做相同处...原创 2020-04-23 20:24:11 · 8157 阅读 · 0 评论 -
cMake 管理VS 项目
1. CMake简介:CMake的特点是:Cmake需要用户用CMake规范的语法编写CMake的脚本,而CMake的脚本语法简单易用,入门非常容易原生支持C/C++/Fortan/Java的相依性的自动分析功能,免除了程序员对代码依赖的调整,对整个工程项目的构建非常有帮助。支持QT、FLTK等开发框架。支持跨平台编译,并可以生成native编译配置文件,在linux/unix平台,生...原创 2020-03-24 15:22:46 · 992 阅读 · 0 评论 -
VS 中opencv itk 等三方库的配置
建议用Cmake 配置,以下为手动配置过程。1、准备好待配置库的bin、lib、Include 文件2、打开VS,选中待配置工程,右键点击"属性",出现以下界面,确定好下图标红处是自己需要的配置,因为本界面的配置有时跟VS 界面不一致。3、点击VC++ 目录,配置如下两处标红处。包含目录为.h文件所在目录,库目录为lib文件所在目录。4、点击链接器,输入,配置如下一标红处,...原创 2020-03-16 18:16:43 · 518 阅读 · 1 评论 -
确定空间直线延长线上的一点
已知两个空间点的坐标StartPoint与EndPoint,并给出一个点的x值,下面代码可以确定出该点的y值与z值DxPoint ExtentLine(DxPoint StartPoint,DxPoint EndPoint,double x ){ double y,z; double result = (x - StartPoint[0])/(EndPoint[0]-Star原创 2017-06-09 09:28:38 · 4191 阅读 · 3 评论 -
C++文件读写
最近项目中用到的是C++读写csv文件,现记录如下:#include ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存中 fstream //读写操作,对打开的文件可进行读写操作 // get the file full path. std::string原创 2018-01-08 16:33:47 · 263 阅读 · 0 评论 -
QString 识别中文
1、QString 转换成 std::string(C++的字符串)使用.toLocal8Bit().data()如dir为QString,想转换成std::string类型dir.toLocal8Bit().data()即可2、std::string转换成QString QString::fromLocal8Bit即可3、c_strconst char *c_str();c_原创 2018-01-08 18:05:33 · 1539 阅读 · 0 评论 -
修改bug的经验总结
1、有时会遇到这样的情况:没有调试信息时,Bug现象稳定重现,但加了调试信息之后,便很难出现了,这种要考虑了paintEvent或OnDraw等实时更新函数了,因为有调试信息的时候,这些函数可能会在某些变化(如zoom pan)的过程中不走或偶尔走几次,因此bug出现的次数就大大减少了。2、在view上做一些测量然后更新(zoom pan)的时候,这些测量会随着操作而改变,基本原理是,zoom、p...原创 2018-02-12 13:32:45 · 499 阅读 · 0 评论 -
引用(&amp;)
1、 引用(&)是对象的别名,不是新定义一个变量,对引用的操作与对对象的直接操作完全相同。引用本身不是一种数据类型,不占内存,系统也不给引用分配存储单元,而是以对应目标的内存地址作为自己的地址,不再改变,从一而终,因此对引用求地址就是对目标变量求地址。声明引用的方法:数据类型 &引用名 = 目标变量名数据类型& 引用名 = 目标变量名数据类型 & 引用...原创 2018-03-04 10:34:25 · 446 阅读 · 0 评论 -
面向对象语言中类与类之间的关系
面向对象语言中类与类之间关系共计六种,分别是继承、实现、关联、依赖、组合、聚合。1、继承:实现代码的复用。面向对象三大特征之一。如动物类与鸟类。2、实现:一个类实现接口功能。如鸟类实现“移动”这一功能。3、关联:两个类之间是一般是平等的,且两个类并不是从属关系,比如猫类和狗类。4、依赖:一个类的某种行为(函数)依赖于另外一个类。如大雁的迁徙依赖于季节。大雁类与季节类就是依赖关系。经常的实现方法为:...原创 2018-03-19 18:37:39 · 2381 阅读 · 0 评论 -
C++ 内存
在C++中内存分为5大区,依次为堆、栈、常量区、代码区、静态/全局 区,静态区分为初始化区与未初始化区1、堆:由程序员进行内存管理,new-delete malloc-free2、栈:由系统进行内存管理,主要存放函数的参数以及代码区3、全局/静态存储区:全局变量,static 变量(初始化、未初始化)4、常量存储区5、代码区int a = 0; //全局初始化区...原创 2018-04-23 13:22:42 · 303 阅读 · 0 评论 -
VS笔记(1)
1、 VS2012的安装步骤先安装程序en_visual_studio_ultimate_2012_x86_dvd_920947.iso再安装更新包VS2012.3安装VS助手Visual Assist X2、 对于只有.h与.cpp文件的代码,可以新建一个带有预编译头的控制台程序(一般都是控制台,但有特殊情况),将stdafx与main函数所在文件内容进行复制,并添加其他.h与.cpp文件,编译...原创 2018-05-25 10:10:31 · 476 阅读 · 0 评论 -
C++基础
1、#include<>和#include""有什么区别使用尖括号<>表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的,即系统目录),而不在源文件目录去查找.使用双引号“”则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找,能更快的找到头文件,加快编译速度。用户编程时可根据自己文件所在的目录来选择某一命令形式。...原创 2018-05-25 13:38:21 · 205 阅读 · 0 评论 -
C++ new 与 malloc的区别 及使用 时注意问题
堆: 将程序运行时可使用的 内存空间 称为堆 一、malloc 与 free原型:void* malloc(unsigned int size);void free(void *p)malloc:在堆中分配一个长度为 size的连续空间 void* 是指分配空间起始地址的指针 如果 malloc函数 未能 成功的执行(eg 内存 不足 ),则返回空指针(null)使...原创 2018-11-27 10:30:11 · 1352 阅读 · 0 评论 -
运算符重载
1、C++中运算符实际也是函数,只是在描述运算符函数时,使用了关键字operator,其他跟普通函数是一致的,故遵守函数重载的原则。2、运算符重载原则 1 除了*,.,sizeof ,?:,::这五个运算符外,其他所有的C++运算符都可以重载,但不允许重载非C++的运算符,如#,##等2运算符重载不改变运算符的优先级和结合性,也不改变其语法结构,即单目运算符只能重载为单目运算符,双目运...原创 2018-11-30 11:15:04 · 485 阅读 · 0 评论 -
Static函数
static的作用主要有两种:为了实现一个类的不同对象之间的数据和函数共享,C++提供了静态成员(静态数据成员、静态成员函数)作用如下:一、限定作用域;二、保持变量内容持久化;一、静态成员变量1、通常一个类的不同对象会用不同的内存来存放各自的数据成员,每个对象的数据成员互不干扰。而静态数据成员不同,它由该类的所有对象共同维护和使用,即静态数成员是类的所有对象共享的成员。2、定义格...原创 2018-01-05 13:56:30 · 3226 阅读 · 0 评论 -
Cmake用到的语句记录
1、如题:Implant 下有两个文件夹Nails、Plates,希望用Cmake命令将每个文件夹中的文件拷贝到Bin目录下,CMakeLists.txt与Implant放到同一目录下,可在CMakeLists.txt中用以下语句实现COMMAND ${CMAKE_COMMAND} -E remove_directory Implant\\.svnCOMMAND ${CMAKE_COMMAN原创 2017-07-17 09:28:02 · 3831 阅读 · 0 评论 -
编码规范(变量、结构篇)
//摘抄自华为软件编写规范 1、去掉没必要的公共变量 说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。 2、仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系 说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。 3、明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建原创 2017-06-25 15:43:07 · 1607 阅读 · 0 评论 -
软件编写规范(可读性)
//摘抄自华为软件编写规范 1、注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级 说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。 word = (high << 8) | low (1) if ((a | b) && (a & c)) (2) if ((a | b) < (c & d)) (3) 如原创 2017-06-25 14:13:14 · 1005 阅读 · 0 评论 -
软件编写规范(标识符命名)
//摘抄自华为软件编写规范 1、标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解 说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。 示例:如下单词的缩写能够被大家基本认可。 temp 可缩写为 tmp ; flag 可缩写为 flg ; statisti原创 2017-06-25 13:56:42 · 2348 阅读 · 0 评论 -
软件编写规范(排版篇)
//摘抄自华为软件编写规范 1、较长的语句(>80 字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读 。perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof(原创 2017-06-25 10:50:10 · 718 阅读 · 0 评论 -
软件编写规范(注释篇)
//摘抄自华为软件编写规范 1、:一般情况下,源程序有效注释量必须在 20 %以上 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语 言必须准确、易懂、简洁。 2、说明性文件(如头文件.h 文件、.inc 文件、.def 文件、编译说明文件.cfg 等)头部应进行注释, 注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其原创 2017-06-25 11:35:43 · 6321 阅读 · 0 评论 -
VTK的Reader与Writer
VTK对不同格式的文件的读写使用不同的类。 一:Reader **QString.toLocal8Bit.data()连着写有问题,要先QByteArray qbTemp = QString.toLocal8Bit(),然后 const char filename = qbTemp.data();* 使用之前应包括相应的头文件,如#include <vtkPNGReader.h&...原创 2017-03-05 16:22:23 · 3110 阅读 · 0 评论 -
虚函数 纯虚函数 抽象类
虚函数: 所谓虚函数是指在编译时不能确定调用的是子类还是基类的函数,必须等运行的时刻才能确定下来。即所谓的所谓“推迟联编”或者“动态联编”。 由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被称为“虚”函数。 纯虚函数 一、定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“原创 2016-11-03 15:57:23 · 387 阅读 · 0 评论 -
C++ 内联函数
内联函数的功能和预处理宏的功能相似,在程序编译的时候将代码在调用处展开,避免像普通函数那样要先转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方那样浪费时间。即所谓的以空间换取时间。内联函数用关键字inline声明,声明的同时必须带有函数体,否则Inline关键字自动忽略,被视为普通函数(运行时被调用)。如果函数声明的同时被定义(带有函数体),则该函数即为原创 2016-09-20 16:23:16 · 374 阅读 · 0 评论 -
C++的三种继承方式
基类与子类的三种继承方式依次为:公有继承、保护继承、私有继承(public、protected、private) public继承:子类可以访问到基类的Public、Protected权限的方法与变量,这些方法与变量在子类中的访问权限不变(基类为public,子类则public 基类protected,子类则protected)。 protected继承:子类可以访问到基类的Public、P...原创 2016-09-20 14:26:23 · 455 阅读 · 0 评论 -
面向对象的特性
面向对象的三个基本特征是:封装、继承、多态。 封装性是基础,继承性是关键,多态性是补充,并且多态性存在于继承的环境中 1、 封装, 类是一种复杂的数据类型。它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 2、 继承,是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下...原创 2016-09-23 13:42:57 · 321 阅读 · 0 评论 -
编码规范(函数、过程篇)
//摘抄自华为软件编写规范 1、对所调用函数的错误返回码要仔细、全面地处理 2、防止将函数的参数作为工作变量 说明:将函数的参数作为工作变量,有可能错误地改变参数内容,所以很危险。对必须改变的参数,最好先用局部变量代之,最后再将该局部变量的内容赋给该参数。 示例:下函数的实现不太好。 void sum_data( unsigned int num, int *data, int *sum原创 2017-06-25 18:16:52 · 2563 阅读 · 0 评论 -
软件编写规范(程序效率篇)
//摘抄自华为软件编写规范 1、编程时要经常注意代码的效率 说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。 2、在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率原创 2017-06-25 18:56:38 · 963 阅读 · 0 评论 -
窗口的最大化、最小化、Normal状态实现
void MinimizeAppBtnClicked(){ showMinimized();}void MaximizeAppBtnClicked(){ maximizeBtn->hide(); maximizeBtn->setChecked(false); normalBtn->show(); normalBtn->setChecked(fals原创 2018-01-04 19:08:50 · 2751 阅读 · 0 评论 -
两点之间插值成一条直线
自己写的代码,以直线方程式为基础,记录一下,以备后用 int X0 = PrePoint.X(); int Y0 = PrePoint.Y(); int X1 = CurPoint.X(); int Y1 = CurPoint.Y(); int nDisX = abs(X1-X0); int nDisY = abs(Y1-Y0); if (nDis原创 2017-11-29 09:55:14 · 3120 阅读 · 0 评论 -
Vld 静态检测内存泄漏
一、特点:Visual Leak Detector(VLD-可视化泄漏探测)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。Win7 比较好用的是vld-2.3,(vld-2.2.3存在bug)二、VLD的安装直接运行原创 2016-09-28 09:48:59 · 1212 阅读 · 0 评论 -
CrashRpt
参考 http://blog.csdn.net/shining100/article/details/7760872转载 2017-08-29 10:19:33 · 666 阅读 · 0 评论