C/C++
繁小华
这个作者很懒,什么都没留下…
展开
-
C++刷新缓冲区
今天看到有段代码在输出的时候用到了cout << n << std::flush; 从名称来看知道std::flush的作用肯定是刷新缓冲区,但是测试一下他与cout << n; 感觉没有任何区别。于是只能问度娘了。果然颇有收获。cout << n; 是系统每隔一段时间进行检测输出的。但是由于间隔比较短,让人以为和没有flush一样。而且还知道了,cout << n << std::endl原创 2016-01-11 22:22:56 · 3624 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:首先遍历一遍寻找空格的数目,然后在便利过程中遇到每个空格的将其替换为%20,注意数组的对应关系。C/C++代码:class Solution {public: void replaceSp原创 2015-11-17 20:23:34 · 354 阅读 · 0 评论 -
程序在执行用之前就崩溃了 , 用调试器单步跟进 , 在 main() 之前就 死了
程序在执行用之前就崩溃了 , 用调试器单步跟进 , 在 main() 之前就 死了,也许是定义了一个或多个非常大的局部数组 (超过上千字节)。 许多系统只有固定大小的堆栈, 即使那些自动动态堆栈分配的系统也会因为一次性要分配大段堆栈而失败。一般对大规模数组, 定义为静态的数组会更好。原创 2015-03-09 20:39:58 · 910 阅读 · 0 评论 -
VC++6.0
VC++ 6.0占用的系统资源比较少,打开工程、编译运行都比较快,所以赢得很多软件开发者的青睐。但因为它先于C++标准推出,所以对C++标准的支持不太好。举个例子: for(int i=0; i { a[i] = i; } for语句中声明的变量i,对于VC++ 6.0来说,出了for循环仍能使用。但很原创 2015-05-17 18:36:40 · 1392 阅读 · 0 评论 -
Visual Studio Debug调试 F5 F10 F11
F10,F11是调试时用的,俩者区别在于F10是逐过程调试,F11是逐语句调试。F11比F10细一些,但考虑到时间问题和部分代码需要快速跳过原因,2者结合用效果最佳。原创 2015-05-20 13:38:26 · 4287 阅读 · 1 评论 -
OpenCV获取图片所有对应坐标中的像素值
获取图片所有对应坐标中的像素值。直接上代码了#include #include "cv.h"#include #includeusing namespace std;int main(){ IplImage *img = cvLoadImage("C:\\Users\\Sunstarisme\\Desktop\\Lemon\\All Frames\\2.bmp", CV_原创 2015-05-29 23:06:20 · 10986 阅读 · 0 评论 -
一个微软面试题--关于位结构体
含位域结构体的sizeof:前面已经说过,位域成员不能单独被取sizeof值,我们这里要讨论的是含有位域的结构体的sizeof,只是考虑到其特殊性而将其专门列了出来。C99规定int、unsigned int和bool可以作为位域类型,但编译器几乎都对此作了扩展,允许其它类型类型的存在。使用位域的主要目的是压缩存储,其大致规则为:1) 如果相邻位域字段的类型相同,且其位宽之和小于类转载 2015-07-24 16:12:03 · 482 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:完全的斐波那契数列思想,对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以 F(n) = F(n-1) + F(n-2),斐波拉契数序列,初始条件是 n=1只能一种方法,n=2两种,递归一下就好了。C/C++代码:class Solutio原创 2015-11-17 20:44:01 · 380 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。思路:直接的递归会溢出,所以要采用动态规划法的思路,将每一次结算的结果都保留在一个数组里面,在用到时就省去了计算的麻烦。C/C++代码:class Solution{public: int Fibonacci(int n) { /*if(原创 2015-11-17 20:41:43 · 533 阅读 · 0 评论 -
opencv中实现滚动条随着视频播放移动
opencv中实现滚动条随着视频播放移动#include "highgui.h"#include "cv.h"int g_slider_position = 0, n = 0;CvCapture *g_capture = NULL;void onTrackbarSlide(int pos){ cvSetCaptureProperty(g_capture, CV_CAP_PR原创 2015-03-16 22:30:23 · 729 阅读 · 0 评论 -
OpenCV图像变换----图像平滑
图像平滑,通过对图像数据与高斯核或者其他核函数进行卷积有效的减少图像的信息内容。#include "highgui.h"#include "cv.h"void showchangeimage(IplImage *image){ cvNamedWindow("input-Image", CV_WINDOW_AUTOSIZE); cvNamedWindow("output-Image"原创 2015-03-17 10:25:21 · 487 阅读 · 0 评论 -
OpenCV Canny边缘检测输出写入一个单通道(灰度级)图像
采用Canny算法做边缘检测 cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size CV_DEFAULT(3) );image:单通道输入图像edges:单通道存储边缘的输出图像threshold1:第一个阈值threshold原创 2015-03-19 12:28:00 · 3487 阅读 · 0 评论 -
构造二叉搜索树C++
构造一颗二叉搜索树,树的结构如图(a),下面上代码(最后输出是中序遍历输出的)#include using namespace std;typedef struct BSTree{ char node_value; struct BSTree *left; struct BSTree *right;} Tree;/*****构造二叉查找树*******************原创 2015-04-08 20:31:49 · 1047 阅读 · 0 评论 -
C/C++字符串与字符数组
字符串是存储在内存中的连续字节中的一系列字符。C++处理字符的方式有两种。第一种来自C语言,常被称为C-风格字符串(C-style string),另一种是基于string类库的方法。存储在连续字节中的一系列字符意味着可以将字符串存储在char数组中,其中每个字符都位于自己的数组元素中。字符串提供了一种存储文本信息的快捷方式。C-风格字符串具有一种特殊的性质:以空字符(null charact原创 2015-06-04 21:59:55 · 798 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:采用冒泡排序的思路,两个for循环,外加一些条件判断,只有当n-1为偶数n为奇数时交换这两项;当一次遍历没有交换动作发生时,结束。C/C++代码:class Solution原创 2015-11-17 20:56:51 · 735 阅读 · 0 评论 -
C/C++的删除文件夹下的所有文件
要删除文件夹下面的所有文件,不多说了,直接上代码#include #include #include #include #include #include //判断是否是".."目录和"."目录inline bool is_special_dir(const char *path){ return strcmp(path, "..") == 0 || strcmp(p原创 2015-05-22 13:40:19 · 17584 阅读 · 5 评论 -
C/C++ 生成文件夹 删除文件夹 获取运行文件路径
最近要用MFC开发一个界面,里面有一个需求就是生成一个与可执行文件(exe文件)同名的文件夹,比如我的可执行文件路径是D:\KFS\codes\22222\Release\22222.exe,我需要在D:\KFS\codes\22222\Release路径下生成一个22222的文件夹放东西。查阅了一点资料之后,成功了。之后写了一个小demo。下面上代码:#include #include#原创 2015-05-19 21:43:25 · 1289 阅读 · 0 评论 -
C++正则表达式
这个新的程序库,被定义于头文件,由几个新的类型所组成:正则表达式(样式)以样板类 basic_regex 的实体表示样式匹配的情况以样板类 match_results 的实体表示 函数 regex_search 是用来搜索样式; 若要搜索并取代,则要使用函数 regex_replace,该函数会回传一个新的字符串。算法regex_search 和regex_replace 接受一转载 2015-12-07 16:13:44 · 571 阅读 · 0 评论 -
C++ string substr()
共有成员函数std::string::substrstring substr (size_t pos = 0, size_t len = npos) const;产生子串返回一个新建的初始化为string对象的子串的拷贝string对象。子串是,在字符位置pos开始,跨越len个字符(或直到字符串的结尾,以先到者为准)对象的部分。参数原创 2016-01-08 19:47:38 · 226886 阅读 · 3 评论 -
C语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与、或、异或、取反、左移和右移位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或转载 2015-11-30 20:59:23 · 718 阅读 · 0 评论 -
C++成员变量的初始化顺序问题
问题来源:由于面试题中,考官出了一道简单的程序输出结果值的题:如下,[cpp] view plaincopyprint?class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){}转载 2016-01-17 19:03:41 · 511 阅读 · 0 评论 -
字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串。输出描述:整数N,最后一个单词的长度。输入例子:hello world输出例子:5getline函数getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。原创 2015-12-30 18:53:08 · 1377 阅读 · 0 评论 -
C++ 全排列函数 std::next_permutation与std::prev_permutation
C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序、std::prev_permutation提供降序。1.std::next_permutation函数原型 template bool next_permutation (B转载 2015-11-27 10:44:56 · 1072 阅读 · 0 评论 -
C++ stringstream介绍,使用方法与例子
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 strstream类同时可以支持C风格的串流的输入输出操作。 istringstre转载 2015-11-19 16:24:56 · 1078 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。C/C++代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution{public: ListNode *FindKthT原创 2015-11-17 20:57:52 · 382 阅读 · 0 评论 -
题目1003:A+B
题目描述:给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出。输入:输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 输出:请计算A+B的结果,并以正常形式输出,每组数据占一行。样例输入:-234,567,890 123,456,789原创 2014-03-27 08:56:55 · 669 阅读 · 0 评论 -
C++、Java和Matlab不同语言关于 y=(++x)+(++x);结果不同的问题
设x的值为3,y=0,则表达式y=(++x)+(++x)后,y的值是( ),不同编译器会有不一样的答案。先写结果:C++: y=10;java: y=9;matlab: y=6;为什么会有这样的结果呢,到底哪个是对的?其实没有对错之分。原因是各编译器处理式子的方式不一样,这个在编译原理中我们学过。就是所谓的前缀表达式,中缀表达式,后缀表达式。什么意思呢?拿刚才的例子来说原创 2015-04-28 19:45:01 · 1408 阅读 · 1 评论 -
指针的危险
在C++中创建指针时,计算机将分配用来存储的内存,但不会分配用来存储指针所指向的数据的内存。如下long * fellow;//create a pointer-to-long*fellow = 233333;//place a value in never-never land上述代码并没有将地址赋给fellow。使用new来分配内存double *pd = ne原创 2015-06-04 22:57:30 · 539 阅读 · 0 评论 -
快速排序算法实现C/C++
对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子非常小,另外他还能够进行原址排序,甚至在虚拟环境中也能很好地工作。下面是快速排序的C++实现代码及运行结果:/* 对SUM个数进行快速排序原创 2015-11-04 19:51:09 · 877 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:逆向分析,应为可以横着放或竖着放,多以f(n)可以是2*(n-1)的矩形加一个竖着放的2*1的矩形或2*(n-2)的矩形加2横着放的,即f(n)=f(n-1)+f(n-2),当到了最后,f(1)=1,f(2)=2。C/原创 2015-11-17 20:48:36 · 445 阅读 · 0 评论 -
变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:和跳台阶不同的是每次跳有n种不同的高度。所以我们需要记录每一次跳跃的有多少种跳法,最后将这些相加。C/C++代码:class Solution{public: int jumpFloorII(int number)原创 2015-11-17 20:47:04 · 348 阅读 · 0 评论 -
C++获取文件大小
#include iostream> #include io.h> #include sys\stat.h> #include afx.h> #define _AFXDLL using namespace std; void main() { // 此文件在工程打开状态下为不可访问 char* filepath = "..\\test.ncb"; // C++获取文件大小方法一转载 2015-02-23 22:28:52 · 1072 阅读 · 0 评论 -
error:只有静态常量整型数据成员才可以在类中初始化
类中 static const double PI=3.1416;error:只有静态常量整型数据成员才可以在类中初始化常整型静态数据成员可以在类中直接初始化,而常实型静态数据成员不可以 class circle{int a; // 普通变量,不能在类中初始化static int b; // 静态变量,不能在类中初始化stati转载 2015-05-29 10:18:44 · 2230 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。C/C++代码:class Solution{public: int minNumberInRotateArray(vector rotateAr原创 2015-11-17 20:39:13 · 344 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。C/C++代码:class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty原创 2015-11-17 20:37:17 · 387 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。思路:巧妙借助递归的思想,利用递归的深度关系从尾到头打印链表中的每个结点的值。C/C++代码:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :*原创 2015-11-17 20:26:33 · 353 阅读 · 0 评论 -
插入排序
#include using namespace std;void insertsort(int a[], int length){ int j = 1; for(; j < length; j++) { int key = a[j]; int i = j - 1; while(i >= 0 && a[i] > key) { a[i + 1] = a[i];原创 2015-03-09 15:58:44 · 418 阅读 · 0 评论 -
C++程序编译错误
--------------------Configuration: hang - Win32 Debug--------------------Compiling...hang.cppLinking...LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainDebug/hang.exe : f原创 2015-03-17 12:39:48 · 760 阅读 · 0 评论 -
MFC中 slider control 和 edit control的绑定
下面我们使用Slider控件和编辑框控件为工具栏添加画笔宽度的设置。在对话框编辑界面拖入一个Group Box,Caption设为“线宽”;拖入一个Slider Control,ID设为IDC_PEN_WIDTH;拖入一个EditControl,ID设为IDC_EDIT_WIDTH,Number设为True,即只允许输入数字。这里我们加2个控件是为了让用户既可以通过滑块控件设置线宽,也可以直接在编原创 2015-05-19 16:20:51 · 4217 阅读 · 1 评论 -
C++ Vector 最大 最小值 索引 位置
C++ Vector 最大 最小值 索引 位置使用STL的Vector时,利用函数 max_element,min_element,distance可以获取Vector中最大、最小值的值和位置索引:参考:http://stackoverflow.com/questions/2953491/finding-the-position-of-the-max-element代码:转载 2015-11-22 17:10:57 · 3703 阅读 · 0 评论