C++
fang_chuan
打打杂啦
展开
-
Effective C++之以const 、enum、iniline替换#define
本文总结自<<Effective C++, 改善程序设计的55个条款>>中的条款3 : “尽量以const, enum, inline 替换#define”(宁可以编译器替代预处理器). 同时辅以<<深入理解计算机系统>>中的第五章“优化程序性能”中的一些内容.一、用const替换#define#define RAD_2_DEGREE 180.0/M_PI 宏定义之所以不被推荐使用是因为它在预处理阶段被替换了, 也就是说...原创 2020-07-27 00:08:21 · 957 阅读 · 0 评论 -
C++ 模板特化
一、函数模板的特化1.函数模板的声明和定义2.函数重载和模板特化3. 作用域问题二、类模板的特化1.定义类特化模板2.特化成员而不特化类原创 2020-07-25 21:58:05 · 996 阅读 · 0 评论 -
C++宏定义中#、##、#@的用法和区别
#表示:对应变量字符串化 ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符 连接符#@:它将单字符标记符变换为单字符,即加单引号。例如: #define B(x) #@x,则B(a)即'a',B(1)即'1',但B(abc)却不甚有效。#include <stdio.h> #de...转载 2020-04-28 21:57:21 · 684 阅读 · 0 评论 -
C++ 11 新特性 之 Enum Class
C++ 11起引入的 enum class相对于传统的enum有了很多变化,主要是针对传统 enum 在编程过程中出现的值类型名称作用域、enum类型安全问题进行了改良.一、传统enum类型 先来看看传统enum在编程过程中可能遇到的一些问题: 1、两个 enum 类型声明时不能有相同值名称声明:#include <bits/stdc++.h> usin...原创 2020-02-16 16:40:49 · 1123 阅读 · 0 评论 -
OPENMP编程指南
进入多核时代后,必须使用多线程编写程序才能让各个CPU核得到利用。在单核时代,通常使用操作系统提供的API来创建线程,然而,在多核系统中,情况发生了很大的变化, 如果仍然使用操作系统API来创建线程会遇到一些问题。具体来说,有以下三个问题:1)CPU核数扩展性问题 多核编程需要考虑程序性能随CPU核数的扩展性,即硬件升级到更多核后,能够不修改程序就让程序性能增长,这...转载 2019-11-04 21:28:16 · 235 阅读 · 0 评论 -
医学影像处理交互平台MITK框架研究
研究了MITK(Medical Image Interaction Tool Kit)有段时间了,编译也编了,能添加的插件都添加了,基本使用也用了,现对整个框架做一个简要梳理。引言:1895年,德国科学家伦琴发明X射线,促使CT(计算机断层成像)、MRI(核磁共振成像)、CR(计算机X线成像)、B超、电子内窥镜等现代医学影像设备相继出现,并广泛应用在临床诊断和治疗上,极大的提升和丰富了医学...原创 2018-05-15 20:02:57 · 8292 阅读 · 2 评论 -
医学影像处理与交互平台MITK----3D分割算法的应用
接上文MITK框架分析,本文中部分公式不想再码了,直接截了图,忘看官们轻喷。(CSDN有必要搞一个word文档导入插件吧)2.2图像分割实验 MITK系统有一个专门用于图像分割的插件Segmentation,它提供了针对2D/3D图像的手动和自动、半自动分割方法,同时提供了一些对分割后图像处理的工具。本文主要对3D分割进行研究和实验,2D分割主要是手动勾画,不在本文研究范围内。 2.2.1阈...原创 2018-05-15 20:17:21 · 5193 阅读 · 0 评论 -
Python 迭代器小节--与C++迭代器的一些思考
最近花了20天才把C++ Primer的“容器与算法”一章看完,过程太长,严重打乱了我的读书计划,但是看的时间长有时间长的好处,我可以不断地反思C++容器与算法设计的优劣。结合前一段时间看的《Python cookbook》一书中的迭代器,特做此札记。1、Pythoniter()先说python中的迭代器,特点:简单易用,方便自定义,还有强大的itertools模块增强迭代器的功能。...原创 2019-06-06 21:34:10 · 401 阅读 · 0 评论 -
C++“智能指针”实践与python的weakref
这两天复习C++ Primer时,在“复制控制”这一章看到管理指针成员,在没使用标准库的情况下自己创建一个智能指针。不过书中还是建议使用标准库unique_ptr、shared_ptr、weak_ptr实现,减少程序员内存管理问题的工作。指针成员默认具有与指针对象同样的行为,但通过不同的复制控制策略,可以为指针成员实现不同的行为。多数C++类采用以下三种方法管理指针成员:(1)指针成员采用...原创 2019-06-14 16:23:46 · 531 阅读 · 0 评论 -
C++常见面试题
来源:牛客网编辑:公众号【编程珠玑】在《这些C++工程师面试题你都会了吗?》分享了一些面试题,应读者强烈要求给出答案,这里给出一部分,答案仅供参考!祝秋招顺利!说一下static关键字的作用参考回答: 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动...转载 2019-10-07 23:51:31 · 281 阅读 · 0 评论 -
VTK系统基础概念一
转自东灵工作室的VTK系列教程,原文链接:http://blog.csdn.net/www_doling_net/article/details/26562595【本节对应原书中的第19页至第25页】VTK系统的总体概述,并讲解运用C++、Java、Tcl和Python等语言进行VTK应用程序开发时所需掌握的基本知识。首先我们从VTK系统转载 2017-11-02 11:27:17 · 642 阅读 · 0 评论 -
Qt程序关于 undefined refrence to vtable for xxx的解决
今天在编译MITK的教程示例程序时遇到 Error: xxx.cpp.o中未定义的引用vtable for xxx,???虚函数表?还指出我的构造函数是虚函数??WTF,我的构造函数怎么会是虚函数。。。奇怪的是CMakeLists.txt中也写清楚add_executable()需要的源文件, 源文件绝对没有语法问题。查阅了半天,发现是因为没有手动给xxx.cpp进行moc编译,所以只incl原创 2017-10-20 22:08:01 · 560 阅读 · 0 评论 -
C++的引用类型
啊刚刚说了C++的运算符重载,运算符重载实际上就是运算符函数的重载,然后调用这个函数。既然是函数调用,那么问题来了:值调用的实质是参数赋值,而运算符函数的参数主要是结构体,结构体可以很大,参数复制既浪费空间又浪费时间。而且运算符函数调用频率又高,这样付出的代价是令人难以承受的。 大家自然而然的想到的解决办法是地址调用,可是地址调用的参数是指针,而指针是标准类型,不可以形参都是指针的。原创 2015-09-24 17:15:17 · 1163 阅读 · 0 评论 -
C++中的重载
函数重载 在C语言中,函数名代表函数地址,不同的函数必须有不同的函数名,即使是参数表不同但功能相同的函数,这显然与高级程序设计的简约原则不符合。所以在C++中,功能相同的函数可以拥有同样的函数名,这就称之为函数重载。 函数重载要求函数的参数表不同,即参数类型或者形参个数不同。如: void Selection(int *pa, int n);原创 2015-09-24 16:31:33 · 384 阅读 · 0 评论 -
C/C++堆栈详解
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2015-09-17 21:14:40 · 577 阅读 · 0 评论 -
VS2013编译opencv3.0
在opencv3.0.0版本中,整体的架构发生了变化,变成了:Core(核心代码)+Plugin(外部插件)。其中Core(核心代码)中的代码都是官方经过很多的测试,可以确保能够稳定运行的代码!!!!而对于Plugin(外部插件)代码,是一些新的算法.1.需要准备的东西opencv3.0源码Windows版:http://opencv.orgcmake-gui(2.转载 2017-02-06 23:38:36 · 2855 阅读 · 0 评论 -
C/C++中volatile关键字解析
以前在做单片机嵌入式开发时遇到过volatile的问题,不过解决之后就没有细究,今天看了篇文章,觉得讲的还算详细,遂转下来。 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 vo转载 2017-09-17 10:29:08 · 299 阅读 · 0 评论 -
c++ singleton pattern
昨天在写单例时突然注意到没有析构函数,google了下把代码完善后,顺便总结了下singleton Pattern,文章出处http://blog.yangyubo.com/2009/06/04/best-cpp-singleton-pattern/索引静态化并不是单例 (Singleton) 模式饿汉模式懒汉模式 (堆栈-粗糙版)懒汉模式 (局部静态变量-最佳版)范例代码转载 2017-09-25 23:54:16 · 367 阅读 · 0 评论 -
类成员函数的指针
今天在Qt中使用unix函数库时,需要传递一个类的成员函数的指针,遂报错。。。google之,浅尝成员函数指针一词。原文出处https://kelvinh.github.io/blog/2014/03/27/cpp-tutorial-pointer-to-member-function/,原文内容有一些错误,已修正。关于成员函数指针成员函数指针是C++最少用到的语法之一,甚转载 2017-09-26 15:01:06 · 464 阅读 · 0 评论 -
关于类成员函数指针的再研究
上次学习了成员函数指针的声明、使用、转换等问题的原理,但是我遇到的问题还是没解决:把成员函数指针传入一个普通函数(例 signal(int signo, __sighandler_t handler), 我要把类的成员函数指针传入signal的第二个参数位置)。参阅知乎网友的解答,因为类成员函数的执行必须依靠一个类实例,所以最简单的办法就是给这个普通函数再添加一个参数void *contex原创 2017-09-26 15:41:35 · 226 阅读 · 0 评论 -
C++中引用
引用就是别名,我引用你,我改变了,你也跟着改变。可能没学过C++的人更多的疑问就是,有了指针为何又要有引用呢?二者的区别何在?A pointer can be re-assigned any number of times while a reference can not be re-seated after binding. 指针可以被重新赋值,而引用不可以int x = 5;转载 2016-03-04 10:57:24 · 276 阅读 · 0 评论