C++编程技术
Walker Zhang
机器视觉
展开
-
C++ 11 新特性(更新)
先Mark一下,后面逐步的Code 实践一遍转自:C++11常用特性的使用经验总结原创 2020-02-23 22:18:14 · 287 阅读 · 0 评论 -
C++ 多态
参考: C++ 多态C++ 多态定义当类之间存在层次结构,并且类之间是通过继承关联时,可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的,类的多态通过虚函数实现。虚函数虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。 我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函转载 2017-08-08 23:39:21 · 1114 阅读 · 0 评论 -
Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量
详情请参考:线程同步技术转载 2018-01-04 11:46:09 · 258 阅读 · 0 评论 -
c++ 设计模式1:单件模式
单件模式应该是所有设计模式中最简单的一个了,但是如果使用不当会出现很多问题,下面我们就分析一下单件模式作用:保证一个class只有一个实体(instance),并为它提供一个全局唯一的访问点 适用性:1、对于一个类(对象),如果它比较大(占用的系统资源非常多),而且这些资源可以被全局共享,则可以设计为singleton模式。2、对于一个类,需要对实例进行计数。可以在In转载 2018-01-15 15:11:00 · 233 阅读 · 0 评论 -
#ifdef __cplusplus extern "C" { #endif 的细节原理
原文转载:点击打开链接#ifdef __cplusplus extern "C" { #endif 的解释1、在好多程序中我们会遇到下面代码段#ifdef __cplusplus extern "C" { #endif//c语法代码段#ifdef __cplusplus }转载 2018-02-02 20:20:19 · 494 阅读 · 0 评论 -
关于VS调试的几个小问题:Edit and Continue(ENC)
1.VS中的“Edit and Continue”(ENC)功能,即在调试的过程中,修改了局部代码,然后继续调试,即时编译(修改后的代码)并调试出结果,而无需重新退出调试线程,再次编译。在VS2013前的所有VS版本(VS2005, VS2008,VS2010,VS2012)中,不支持ENC功能,VS2013中只支持Debug-x32编译平台下ENC功能,而不支持Debug-x64平台;VS2原创 2018-03-15 21:29:37 · 1983 阅读 · 0 评论 -
C++ Primer--虚函数与纯虚函数的区别
转载:虚函数和纯虚函的区别虚函数的属性:1. 定义一个函数为虚函数,不代表函数为不被实现的函数。2. 定义为虚函数是为了允许用基类的指针来调用子类的这个函数。3. 当想要在基类中抽象出一个方法,且该类被继承类而不能被实例化时。4. 基类的方法必须在派生类中被实现时。5. 多个对象具有公共的抽象属性,但却有不同的实现要求时,实现多态。转载 2018-03-18 11:48:29 · 449 阅读 · 0 评论 -
c++ 多态、覆盖、重载的综述
转自:点击打开链接,代码部分做部分修改;1、多态: 在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声类中的那个函数,调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。一个操作随着...转载 2018-03-18 12:10:35 · 232 阅读 · 0 评论 -
C++ 内存模型
待续转载 2018-07-02 22:35:22 · 214 阅读 · 0 评论 -
C++调试之创建Dump文件和调试Dump文件
如何在发布后程序中捕获程序的崩溃和异常往往是比较麻烦的事情,一般采用日志记录的方法来记录程序运行的每个流程,但是通常为了程序运行的性能,日志记录的方法只是记录程序运行的每个主要的处理流程,不能进行具体详细的记录,比如for 循环中的崩溃记录。C++语言中调用window API函数CreateFile()和MiniDumpWriteDump(),可以方便的记录程序崩溃时的Dump信息,并保持dum...原创 2018-08-28 10:22:01 · 2352 阅读 · 0 评论 -
C++单元测试框架Google Test系列
随着开发工程的深入,代码量也逐渐变大,“打地鼠”的问题也逐渐暴露处理,经常这里解决一个Bug,另外一个地方有一个新的Bug,因此在考虑做项目的单元测试,接下来会仔细整理单元测试的工程。先Mark一篇博客:玩转Google开源C++单元测试框架Google Test系列(gtest)(总)...转载 2019-04-24 11:33:06 · 190 阅读 · 0 评论 -
使用C++ 标准库中的中的Map对自定义的结构体数据集进行排序+去重复
今天写了一个三维网格保存ply格式的小工具函数,因为ply类型是顶点按索引排列的方式,不同于STL类型的按面片索引的方式。因此,准备借助于C++中的Map类型,来进行顶点的去重复和排序。因为对Map结构的不了解,竟然花了一天的时间去实现,中间走了不少歪路,也借鉴了不少其他的方法,最终实现了自己想要的结果。纸上得来终觉浅,绝知此事要躬行,很有必要记录一下,以此为戒。首先定义STL类型的读取结构:...原创 2019-06-12 15:05:52 · 945 阅读 · 0 评论 -
VS 优化C++代码几点注意事项
1.VS Release和Debug版本对程序的处理机制不同,特比是对变量的初始化,需要格外注意,可以参考博客:Debug与Release版本的区别详解2.C++ 代码中使用openmp并行运算:omp_set_num_threads(8);#pragma omp parallel for schedule(static,1) for() {};需要注意:1) 将VS原创 2017-07-19 15:45:27 · 4127 阅读 · 0 评论 -
C++模板
转自:C++模板一C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使转载 2017-07-31 16:01:20 · 214 阅读 · 0 评论 -
#include<vector> 的用法
C++ vector 用法(#include )标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。 一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本转载 2015-08-03 12:22:13 · 377 阅读 · 0 评论 -
c++中“计时器”、“sort”、“namespace”函数的用法
1. C++ 中的“计时器”头文件: #include DWORD dwStartTime = GetTickCount(); // 用dwStartTime记录起始时间 …………………… (程序段) cout //(输出编译器运行程序段时的时间) 注:poj中不支持 #include原创 2015-08-03 12:34:46 · 466 阅读 · 0 评论 -
C语言采用文本方式和二进制方式打开文件的区别分析
C语言采用文本方式和二进制方式打开文件的区别分析投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-07-17 这篇文章主要介绍了C语言采用文本方式和二进制方式打开文件的区别分析,有助于读者更好的理解文本文件与二进制文件的原理,需要的朋友可以参考下稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还转载 2015-09-03 21:54:33 · 827 阅读 · 0 评论 -
C和C++中的文件读入写出区别
[原]C和C++中的文件读入写出区别1、先写写C的吧,在C语言中读入写出文件要用到fopen这个函数,而且要先定义文件指针,为了方便,我们不妨先定义两个,一个fp1用作输入文件指针,另一个fp2用作输出文件指针。FILE *fp1,*fp2;接下来我们使用fopen()函数以只读方式(r)打开输入文件input.txtfp1 = fope转载 2015-08-22 11:21:58 · 1622 阅读 · 0 评论 -
VC++ MFC中多线程
我们都会发现,如过给主窗口过多的任务,或者让主窗口过多地Sleep,那么主窗口很难响应用户的任何操作,甚至在此种情况下想要移动一下主窗口都会造成窗口标题栏显示“没有响应”,如此一来,大多用户都会启动任务管理器来结束这个假死的窗口。如何避免这种情况呢?一种办法就是使用多线程,也就是把那些耗时耗力的工作交给主窗口的子线程,如此以来,假死的就不是主窗口而是用户看不见的转载 2015-10-13 19:29:47 · 656 阅读 · 0 评论 -
opencv中的一般数据类型
opencv源代码:#define CV_CN_MAX 512#define CV_CN_SHIFT 3#define CV_DEPTH_MAX (1 << CV_CN_SHIFT)#define CV_8U 0 #define CV_8S 1#define CV_16U 2#define CV_16S 3#define CV_32S 4#def原创 2016-07-29 16:09:36 · 608 阅读 · 0 评论 -
开源几何计算数学库
a) GeosGeos的全称就是Geometry Engine Open Source,参考网站就是:http://geos.refractions.net,从名称就可以看出,Geos就是判断几何体的过程。Geos是用C++语言写的处理计算几何的开源库。b) CGALCGAL的全称就是Computational Geometry Algorithms Library转载 2016-08-03 17:49:28 · 12183 阅读 · 0 评论 -
C++中的容器vector的使用
STL标准模板库提供三种类型的组件:容器,迭代器和算法,他们都支持泛型程序设计标准;容器主要分为两大类: 顺序容器和关联容器 。顺序容器有:(vector, list, deque和string等)是一系列元素的有序集合。关联容器:(set, multiset,map, multimap)包含查找元素的键值;迭代器的作用是遍历容器;在进行多组测试数据是一定要注意:在每组测试转载 2016-08-05 11:52:38 · 674 阅读 · 0 评论 -
VS编译 Lib库和Dll库的区别
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2016-09-15 19:50:19 · 4828 阅读 · 0 评论 -
C++类的封装
1. C++面向对象编程介绍面向对象编程(Object Oriented Programming),简称OOP。在传统的面向过程编程中,数据以及数据的相关操作函数都是分离的独立个体;对象,如周围的一切其实都是对象;就编程角度,对象包括A)一系列属性(数据);B)一系列操作(函数)。OOP提供了设计对象的功能,对象包括特性和行为,两者都囊括在一起,共同构成对象实体(即转载 2016-09-05 13:58:10 · 15998 阅读 · 0 评论 -
C++中动态库(.dll)和静态库(.lib)
安定原创 2016-10-29 15:26:45 · 4677 阅读 · 0 评论 -
OpenMP学习笔记<一>
##并行程序设计思路 并行程序设计和串行的稍微不同, 大概经历下面四个阶段: 划分: 将计算分解成尽可能多的小任务, 可以按处理对象数据进行域分解, 也可以按计算任务进行功能分解. 这两种分解要做到数据集和计算集不相交. 通信: 划分产生的任务, 一般不能完全独立执行, 需要进行数据通信 组合: 根据任务的局部性, 将小任务组合成更大的任务 映射: 将组合后的多个任务分配到多个处理器上, 并期转载 2017-03-01 13:46:26 · 452 阅读 · 0 评论 -
C++ rand,srand用法
计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。) 我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准转载 2015-06-23 22:43:27 · 339 阅读 · 0 评论