C++
文章平均质量分 53
Sean_SJTU
研究兴趣模式识别、机器学习、数据挖掘。
展开
-
杂谈--vc++6.0用fstream区别于VS
个人感觉vc++6.0的功能感觉相比VS还是逊色了不少,好多格式过于陈旧,并含有令人崩溃的bug。在vc++6.0里较好的读写文件方式如下:(需要包含头文件:stdio.h stdlib.h) FILE *fp=fopen("...filepath...","r/w/a/r+/w+/a+"); fputs("...sth...",fp); fclose(fp);但是如想像原创 2013-12-13 00:40:27 · 1890 阅读 · 0 评论 -
C++遍历文件夹下所有文件
为数不多的好用的代码,遍历文件夹获取所有子文件名,"filespec"可用通配符“*?”。注意如果用相对路径的话,获取所有文件名后应再调用SetInitDir将初始目录改为当前目录,否则中间生成的文件都会放在之前的“InitDir”内。 C/C++遍历文件夹感觉真是很不好用,建议还是使用C/C++做单任务处理,然后通过脚本语言实现遍历比较合理。CBrowseDir.h转载 2015-01-29 16:01:54 · 2345 阅读 · 0 评论 -
linux C++ 莫名奇妙的段错误(segmentation fault),无法调用其它函数
进来在linux下开发C++项目,遇到了非常奇怪的bug。项目需要多线程实现,在写好代码后,每当运行到线程函数内部,当内部调用其它函数如printf、fopen等时就会提示段错误(segmentation fault)。编程很久了,自觉不会出现很低级的语法错误,经仔细检查许久确实也未发现任何问题。在给很多厉害的朋友看过代码后也未能帮助找到这个bug,后来经自己一番思索终于找到问题所在。下面先给出线原创 2014-10-06 14:45:00 · 5987 阅读 · 0 评论 -
C++类构造优化 - 不调用拷贝构造函数
假如有下面这样一个类:class A{public: A(int p, char q):x(p), c(q){ cout << "constructor called" << endl; } A(const A& a){x = a.x; c = a.c; cout << "copy constructor called" << endl;}~A(){cout << "destruc原创 2014-09-28 00:38:15 · 2137 阅读 · 1 评论 -
为什么C++赋值运算符重载函数不能被继承?
为什么C++赋值运算符重载函数不能被继承?(zz:http://www.cqumzh.cn/topic_show.php?tid=134570)这个问题曾经困扰过我一阵子。请先看一下下面的源代码:class A1{public: int perator=(int a) { return转载 2014-07-24 16:18:26 · 1714 阅读 · 0 评论 -
c++中的字节对齐
字节对齐 1. 基本概念字节对齐:计算机存储系统中以Byte为单位存储数据,不同数据类型所占的空间不同,如:整型(int)数据占4个字节,字符型(char)数据占一个字节,短整型(short)数据占两个字节,等等。计算机为了快速的读写数据,默认情况下将数据存放在某个地址的起始位置,如:整型数据(int)默认存储在地址能被4整除的起始位置,字符型数据(char)可以存放在任何地址转载 2014-09-09 09:47:45 · 948 阅读 · 0 评论 -
推荐一个背景建模的开源库
如题,该库名为BGSLibrary,是采用C++编写的用于 background subtraction (BGS)背景减去相关算法的开源库,包含了29种目前常用的背景减去算法。目前发布在google code上面,其链接为:https://code.google.com/p/bgslibrary/,遵守GNU GPL v3协议,需要的朋友可以自行下载。目前该库中包含的BGS算法有:转载 2014-06-17 22:36:14 · 1391 阅读 · 0 评论 -
C++编译程序占用内存分为哪几部分
一个由 C/C++ 编译的程序占用的内存分为以下几个部分 1 、栈区( stack ) — 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2 、堆区( heap ) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3 、全局区(静态区)( sta原创 2014-06-13 11:48:24 · 1434 阅读 · 0 评论 -
VS2010下生成dll的方法(更新)
之前学习VS2010下面生成dll的方法总结了一篇博客《VS2010下生成dll的方法》,近来发现其实可以做的更简洁。首先,在选择了生成dll的工程中,头文件“myAPI.h”中定义函数可以如下:#ifndef _MYAPI_H#define _MYAPI_H_declspec(dllexport) int ADD(int a, int b);#endif然后在“myAPI.原创 2014-05-28 15:42:40 · 1814 阅读 · 1 评论 -
C和C++中泛型编程 - 适应不同类型参数的函数
首先一个简单的问题,如何实现交换两个整数的值? 想必每个有编程经验的人都能作答。C语言用指针实现如下:void swap(int * a, int * b){ int tmp = *a; *a = *b; *b = tmp;}C++可以使用引用实现如下:void swap(int & a, int & b){ int tmp = a; a原创 2014-05-19 21:34:27 · 5035 阅读 · 0 评论 -
POJ-priority queue练习题:比较质因数个数
题目描述:原创 2014-05-08 21:56:35 · 4624 阅读 · 0 评论 -
VS2010下生成dll的方法
1.首先创建生成dll的项目:打开VS2010,两种途经建立dll项目,基于MFC DLL的和基于Win32控制台应用程序的,这里选择基于Win32控制台建立。 a.文件--新建--项目(项目命名为myAPI)--Visual C++ --Win32--选择Win32控制台应用程序; b.接下来下一步一直到如下图,程序类型选择DLL,如无特殊需要选择空项目完成,项目建立完毕;原创 2013-12-12 18:17:01 · 17808 阅读 · 3 评论 -
VS2010中仅一次配置opencv的方法
有没有什么方法可以在VS2010中只配置一次opencv就搞定呢,网上多番查阅说没办法,不过,后来总算找到一个非常棒的解决办法!在这里记下分享了:...原创 2014-01-21 20:53:48 · 2163 阅读 · 0 评论 -
C++中二维数组作为函数参数
首先二维数组有如下两种定义方式: A. int Arr[2][3]={{1,2,3},{4,5,6}}; B. int **Arr=new int* [2];for(int i=0;i<2;i++) Arr[i]=new int[3];//initializefor(int i=0;i<2;i++) for(int j=0;j<3;j++)原创 2014-01-04 17:53:39 · 2576 阅读 · 0 评论 -
MFC加入Skin++皮肤美化界面
一直看微软的mfc的界面单调的让人没有热情,换个皮肤会让人体验上升极大,方法简单如下:(首先网上下载skin++的包)1、将SkinPPWTL.lib skinppwtl.dll SkinPPWTL.h三个文件及相应皮肤拷贝至工程文件夹下;(对dll使用不清楚可以参见前文blog)2、在StdAfx.h文件中加入#include "SkinPPWTL.h"//..#endif //原创 2013-12-14 00:33:30 · 3880 阅读 · 4 评论 -
opencv图像原地(不开辟新空间)顺时旋转90度
前一阵朋友碰到这么一道题:将图像原地顺时针旋转90度,不开辟新空间。此题看似平易(题目简短),仔细研究发现着实不容易。经过一番探索后,终于找到了正确的算法,但是当使用opencv实现时,有碰到了困难而且费了一番周折才找到问题所在。首先,解决这个问题,先简化成原地90度旋转一M×N的矩阵A(注意不是N×N方阵)。对于2×3的矩阵A = {1,2,3;4,5,6},其目标为矩阵B = {4,1;5,2;6,3}。因为是原地旋转,这里A和B应指向同一大小为6的内存空间。这里有这样一个重要的导出公式,就是原创 2015-01-29 21:18:29 · 5364 阅读 · 4 评论