C&C++
lanbing510
热衷计算机技术,机器智能,爱折腾的博士僧
展开
-
Boost环境配置及遇到的问题解决方案
1.模块/工具简介Boost库是一个跨平台,开源并且完全免费的C++库,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,使得实际的开发更加灵活和高效。(下载最新版的Boost库http://www.boost.org/ )2.系统要求Windows xp以上3.部署步骤(1)选择下载Boost库Wi转载 2013-09-17 20:54:08 · 11400 阅读 · 1 评论 -
内存泄露检测及cvClone造成的泄露
调了几个小时,到最后发现内存泄露的原因是opencv的cvClone函数,原创 2014-04-22 23:52:30 · 1577 阅读 · 0 评论 -
用openMP进行并行加速
最近在看多核编程。简单来说,由于现在电脑CPU一般都有两个核,4核与8核的CPU也逐渐走入了寻常百姓家,传统的单线程编程方式难以发挥多核CPU的强大功能,于是多核编程应运而生。按照我的理解,多核编程可以认为是对多线程编程做了一定程度的抽象,提供一些简单的API,使得用户不必花费太多精力来了解多线程的底层知识,从而提高编程效率。这两天关注的多核编程的工具包括openMP和TBB。按照目前网上的讨论,转载 2013-12-04 01:03:13 · 5159 阅读 · 3 评论 -
关于Debug和Release
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密转载 2013-12-04 01:25:34 · 1142 阅读 · 0 评论 -
鼠标形状设置参数
设置鼠标在对话框某个区域的响应,可以添加WM_MouseMove消息响应,并在OnMouseMove()函数中实现操作。 但是,控件其实也是一个对话框。所以,如果要设置鼠标在控件所在范围内的事件,用WM_MouseMove是行不通的。 解决方法:重载OnSetCursor()方法。 步骤:1.打开对应对话框的类向导ClassWizar转载 2013-12-02 12:55:07 · 3484 阅读 · 0 评论 -
Error LINK2005: already defined in libcmt.lib
这个错误是微软设计错误,因此如果遇到这个错误,我们只能躲过这个链接错误。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函 数库,可能会引起这个错误。MS, C有两种C函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程 的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误。因此建议使用支持多线程的msvcrt.lib转载 2013-09-17 20:38:35 · 2222 阅读 · 0 评论 -
Python 与 C++ 的交互编程
基础知识编译语言和解释语言尽管现在很多编程技术都在交融,出现了不少带有编译系统的解释语言,和带有复杂运行时系统的编译语言,但通常我们还是可以比较明确的区分它们。在这个大前提下,Python和C++属于这个两类技术中比较极端的代表。编译时和运行时C++的强大之处在于高效的生成产品和强大复杂的编译系统。利用C++的语法,可以生成非常灵活强大的程序,而这其中大部分转载 2013-09-30 16:59:45 · 7123 阅读 · 0 评论 -
C++记录精确时间-QueryPerformanceFrequency()
精确获取时间QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。QueryPerformanceFrequenc原创 2012-10-08 20:28:09 · 8643 阅读 · 2 评论 -
再看Vector容器
vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class template)。模转载 2013-04-13 09:35:27 · 1062 阅读 · 0 评论 -
命名空间(转载)
本讲基本要求 * 掌握:命名空间的作用及定义;如何使用命名空间。 * 了解:使用早期的函数库 重点、难点 ◆命名空间的作用及定义;如何使用命名空间。 在学习本书前面各章时,读者已经多次看到在程序中用了以下语句:using namespace std; 这就是使用了命名空间std。在本讲中将对它作较详细的介绍。一、转载 2010-09-05 11:22:00 · 1241 阅读 · 0 评论 -
C++ 类型转换
1. 隐式和显式初始化1.1 C++隐式初始化int ival(1024);string hello("Hello world.")1.2 C++显式初始化int ival = 1024;string hello = "Hello world." *PS: 注意这里"=" 语法是拷贝构造函数而不是赋值运算! 因为一个新对象被定义一定要有一个构造函数而不不是一个赋转载 2013-01-28 20:02:36 · 852 阅读 · 0 评论 -
智能指针
auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs 不能被保存在 stl 的容器中。当 auto_ptr 离开了自己的作用域或者被销毁,由 auto_ptr 管理的对象也会被销毁。使用std::auto_ptr需要的头文转载 2013-01-30 21:16:38 · 748 阅读 · 0 评论 -
C函数指针
函数指针通常用来实现回调,其基本用法如下:1、定义函数指针类型// 定义一个原型为int Fun( int a );的函数指针typedef int (*PTRFUN) ( int aPara );2、函数指针变量的定义PTRFUN pFun; // pFun 为函数指针变量名int (*pFun2) ( int a ); // pFun2转载 2012-10-28 23:22:22 · 1282 阅读 · 0 评论 -
1.#IND 1.#INF nan inf 1.#QNAN SNaN 问题的解决
内容整理自网络进行浮点数编程时,如果没有注意,常常会出现输出类似 1.#IND, 1.#INF 或者 nan, inf 之类奇怪的输出。这通常隐含了浮点数操作的异常。特殊浮点数的含义1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。例如,当用 0 除一个整数时便会得原创 2013-03-16 21:29:31 · 6068 阅读 · 0 评论 -
关于文件的文本读写和二进制读写
我们都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?我觉得,对于编程人员,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。 具体的说: 1。以哪种方式打开一个文件? ANSI C规定了标准输入输出函数库,用 fopen()函转载 2012-11-14 16:15:00 · 6174 阅读 · 0 评论 -
this指针的总结
(搜罗了网上关于this指针理解的精华)参考(http://hi.baidu.com/271032830/blog/item/a7d065335a821047ad4b5ff0.html) (http://blog.csdn.net/starlee/archive/2008/01/24/2062586.aspx)先要理解class的意思。class应该理解为一种转载 2009-12-04 09:23:00 · 1586 阅读 · 2 评论 -
STL的erase()陷阱-迭代器失效总结
下面材料整理自Internet&著作。STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用 list、set 或 map遍历删除某些元素时可以这样使用:正确使用方法1 std::l转载 2013-04-13 09:34:31 · 6690 阅读 · 1 评论 -
类的接口与实现的分离
类的接口与实现的分离转自http://hi.baidu.com/ilovewshy/blog/item/7cd32fdd34546dea77c63857.html2008年07月14日 星期一 19:10类通常的组织方式:接口和实现。类的接口是指类的声明,实现是指类的成员函数的定义。在c++程序中,常把接口放在一个与类同名的头文件中,类的实现放在一个与类同名转载 2010-03-14 15:11:00 · 1730 阅读 · 0 评论 -
return函数与exit函数的总结
exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值.. exit(1)表示进程转载 2009-12-03 07:26:00 · 774 阅读 · 0 评论 -
C++内存分配及变长数组的动态分配
有段时间不敲代码了,忘了不少东西,因为一个数组的动态分配,引出一连串的问题,往后要重新拾起来啊!步入正题//------------------------------------------------------------------------------------------------第一部分 C++内存分配//------------------------------转载 2012-10-25 21:23:18 · 21527 阅读 · 2 评论 -
volatile的作用
讲讲volatile的作用一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(转载 2009-11-08 17:43:00 · 616 阅读 · 0 评论 -
指针数组,数组指针,以及函数指针,以及堆中的分配规则(转载)
别人做的归纳,系统多了~~ 一 :关于指针和堆的内存分配 先来介绍一下指针 : 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string转载 2009-11-27 23:51:00 · 707 阅读 · 0 评论 -
潜套类的理解
嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员。嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见。嵌套类的名字将不会与另一作用域中声明的名字冲突。嵌套类定义了其外围类中的一个类型成员。像任何其他成员一样,外围类决定对这个类型的访问。在外围类的转载 2009-11-05 22:25:00 · 735 阅读 · 0 评论 -
自编小工具:Collect-便利你的阅读摘录收集, 含源码,分享给大家
你是否已经厌烦频繁的切换窗口进行复制粘贴?你是否想要一个工具在不影响阅读连续性的情况下进行摘录?Collect,便利你的摘录,享受你的阅读。性质: 完全免费,代码公开,无广告,无病毒,绿色,支持XP/WIN7/WIN8功能: Collect模式下,在你进行阅读的时候,无论你使用的是什么阅读器(网页浏览器、PDF阅读器,Office.....),只需复制你想要摘录原创 2015-03-20 13:46:55 · 2336 阅读 · 0 评论 -
Normalized Cut的C++代码 Linux Win
由于工作上需要C++版的Normalized Cut 代码,爬遍几乎整个网络,找到了一个比较靠谱的版本,但期间各种配置,终于搞定,做下记录。代码原始版:https://github.com/bsankaran/clutter_segmentation/tree/master/ncuts-evh一、 首先自己在Ubuntu系统上验证了下,配置的时候:1 先下载Boost原创 2015-08-07 18:17:10 · 2550 阅读 · 1 评论 -
Python和C|C++的混编(一):Python调用C、C++---Boost库
不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C、C++的调用1 首先确定已经安装python和boost库,本例测试环境是python2.7,boost_1_54_0 ,在vs平台下实现2 vs建立dll工程,vs下boost库的环境配置参加上篇博文,记得包括python的依赖库:E:\Python27\include和E:\P原创 2013-09-30 16:09:06 · 9484 阅读 · 0 评论 -
字符流stringstream详解
以下内容转自:http://www.usidcbbs.com/read-htm-tid-1898.htmlC++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C++风格的串流转载 2015-01-05 15:11:29 · 21657 阅读 · 1 评论 -
Visual Studio 默认路径的修改
可以直接修改 C:\Users\lenovo\AppData\Local\Microsoft\MSBuild\v4.0 目录下的文件:Microsoft.Cpp.Win32.user 或者是Microsoft.Cpp.X64.user比如 原来内容为:$(ExecutablePath)$(IncludePath)$(ReferencePath)$(LibraryPa原创 2013-01-15 15:45:44 · 12914 阅读 · 0 评论 -
预编译宏定义集整理
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过转载 2015-01-29 10:11:24 · 935 阅读 · 0 评论 -
vs调试技巧的总结
调试技巧的总结,内容整理自互联网调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间。1. 悬停鼠标查看表达式调试有时候很有转载 2013-01-26 22:02:59 · 4749 阅读 · 0 评论 -
ZThread库的配置,Windows&Linux
ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序。ZThread库的主页:http://zthread.sourceforge.net最新版本Zthread远吗下载地址:http://go.rritw.com/prdownloads.sourceforge.net/zthread/ZThr转载 2012-12-26 22:16:44 · 1719 阅读 · 0 评论 -
C++对象的深拷贝和浅拷贝
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制: (1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如: class Rect{private: int width; int height;};Rect rect1;R转载 2013-01-28 21:43:17 · 937 阅读 · 0 评论 -
SDL的编程与vc
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://scalpel00.blog.51cto.com/1071749/247399SDL(simple DirectMedia Layer)是一个可跨平台的开源库,最近由于自己的兴趣,就把它windosXP下的环境搭建了下。转载 2010-04-10 07:43:00 · 1241 阅读 · 0 评论 -
VC下有了graphics.h兼容库
VC下有了graphics.h兼容库,开源倡议有很多如鹏网的会员问过“VC、C-Free下怎么编译不了用graphics.h编写的程序?”。这是因为graphics.h是TurboC下的函数库,不是C语言标准的库,VC、MinGW没有提供对其的支持,所以如果需要编译用graphics.h、bios.h等编写的程序还是用TurboC吧。不过这一切即将改变。刚才上网发现了一转载 2010-04-09 22:58:00 · 1791 阅读 · 0 评论 -
Assert小结
转自http://hi.baidu.com/bevan_007/blog/item/3dc882319c3c521febc4af19.htmlassert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么转载 2010-03-29 23:19:00 · 873 阅读 · 0 评论 -
c++关于变量
作用域:变量名有效的范围 存在期:变量在程序中存在的时期. 存储方式:auto, register, extern, static 存储空间类型: 栈(stack):自动分配和清除的变量.如:局部变量和函数参数等 堆(heap):由malloc等函数分配的空间. (在c++里这叫自由存储区,而把new得来的空间叫做堆) 全局/静态存储区:存储全局变量和静态变量. 常量存储区:存储转载 2010-03-26 22:13:00 · 964 阅读 · 0 评论 -
c++运算符优先级列表
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名转载 2010-03-26 22:09:00 · 826 阅读 · 0 评论 -
C++中const用法总结
C++中const用法总结作者JuKevin 1. const修饰普通变量和指针const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。转载 2010-03-26 21:25:00 · 670 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL的区别 创建和示例
1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不转载 2010-03-14 22:40:00 · 713 阅读 · 0 评论 -
C++实现计算程序运行时间 高精度
转自http://blog.csdn.net/hityct1/archive/2009/02/03/3860719.aspx对于精确度要求更高的定时操作,应该使用QueryPerformanceFrequency()和 QueryPerformanceCounter()函数。这两个函数是仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。示例:v转载 2010-03-12 23:47:00 · 1179 阅读 · 0 评论