- 博客(40)
- 资源 (3)
- 收藏
- 关注
原创 单词倒排 与 IP整数转换
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。举例:一个ip地址为10.0.3.193每段数字 相对应的二进制数10 000010100 000000003 00000011...
2018-08-07 23:12:47 269
转载 C++中的类所占内存空间总结
类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的。摘抄部分:成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个table,table里...
2018-03-13 18:54:03 459
转载 单链表反序
#include <stdlib.h> #include <stdio.h> #include <iostream> #include <time.h> #define _random(x) (random()%x) using namespace std; struct LinkNode { i...
2018-03-01 23:18:46 302
原创 二叉树的C++简单实现
二叉树的C++简单实现#include using namespace std;/* 存在的问题:** 1.拷贝构造,赋值** 2.find函数返回指针,公开的find函数让其返回逻辑值,true代表存在,false代表不存在*****/typedef int T;struct Node{ T data; Node* left; Node* right;
2016-12-06 20:50:44 1185
原创 用数组实现简单的栈
用数组实现简单的栈#include using namespace std;typedef int T;//用数组实现简单的栈class Stack{ T data[10]; int sz;public: Stack():sz(){} //入栈 void push(const T& d) throw(const char*){ if(sz==1
2016-12-06 20:39:41 498
原创 单链表的C++实现
单链表的C++实现#include <iostream>#include <stdexcept>using namespace std;typedef int T;//链表类class List{ struct Node{//内部类 T data; Node* next; Node(const T& d):data(d),next(){}...
2016-12-06 20:31:41 401
原创 C/C++编程语言之进制转换16进制字符串转10进制字符串
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。 例如1:输入:0xA输出:10 例如2:输入:0xB1输出:177#include #include #include #include "oj.h"/*功能: 输入: 输出: 返回:成功返回0,其它-1; */int favorite(int n){ i
2016-12-06 20:13:33 6382
原创 C/C++编程题之计算机大端小端判别
字节顺序:小端顺序:最不重要的字节首先存储,0x12345678的存储顺序是0x78,0x56,0x34,0x12.大端顺序:最重要的字节首先存储,0x12345678的存储顺序是0x12,0x34.0x56,0x78.网络字节序采用大端顺序利用联合union里面的变量共享一块内存的性质很容易判断计算机的大小端顺序bool IsBigOrSmallEnd(){ un
2016-12-05 23:00:59 579
原创 C++中不能被重载的运算符
C++中不能重载的运算符只有5个:. (成员访问运算符).* (成员指针访问运算符):: (域运算符)sizeof (长度运算符)?: (条件运算符)前两个运算符不能重载是为了保证访问成员的功能不能被改变,域运算符和sizeof 运算符的运算对象是类型而不是变量或一般表达式,不具备重载的特征。
2016-12-04 19:58:04 659
原创 C/C++编程题之圆桌游戏
n个人围坐在一个圆桌上从1到n编号,顺时针从第一个人开始报数,从1开始报到m(m < n),报到m的那个人出圆桌,再从出桌的人的下一个人从1开始报数,直到圆桌上的人不足m人位置,输出最终剩下人的编号。bool RoundTable(int n,int m,list<int>& personList){ personList.swap(list<int>()...
2016-12-04 19:49:14 2883
原创 C/C++语言编程之斐波拉契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。实现一个函数,参数为数列的第几位,返回数列在这一位置的数字。斐波拉契数列数列的非递归实现
2016-12-04 19:11:49 3949
原创 进程间的几种通信方式的比较和线程间的几种通信方式
近日想总结下进程间,线程间的通信方式,在网上搜索了下,感觉写的很好,照搬过来,当做加深记忆。几种进程间的通信方式(1) 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。(2)有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信。(3)信号量(semopho
2016-11-24 20:42:50 38637
原创 C/C++中部分常见数学函数
因项目中经常涉及到一些数据的处理,本文总结了在项目开发中经常使用到的数学函数,记录下来权当加深印象,并作为笔记供日后查看,若能帮助到部分网友那也感到幸莫大焉。
2016-09-21 23:27:55 4082
原创 win 32Api获取系统内存函数
windows编程中 获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx,GlobalMemoryStatus函数可以在C语言咧直接调用,但是GlobalMemoryStatusEx却不可以直接调用,因为GlobalMemoryStatusEx被写在了系统的kernel32.dll动态链接库里面,所以我们在使用GlobalMemoryStatusEx要加载kernel32.dll库
2016-09-21 22:36:28 3179
原创 正则表达式简单使用
前段时间做项目使用C#写界面,在对界面输入框中的数字进行数据有效性检查时用到了正则表达式匹配,当时不是很懂花了三个多小时才搞定-126-11这个范围使用正则匹配的表达式,在网上搜索了几篇比较有价值的博客,受益匪浅现在记录下来作为以后的笔记,也希望能帮到对正则表达式还不是很懂的新手朋友们。符号解释^ 匹配输入字符串的开始位置。在一个表示中可以出现多次$ 匹配输入字符串结束的位置。在一个表示中
2015-12-02 21:43:13 664
原创 C++深拷贝
对于一般的对象比如int a = 10;int b = 20;对象间的赋值,复制过程很简单,但对于类对象来说,其内部存在着各种各样类型变量,其拷贝过程比较复杂。事实上,在对象拷贝过程中。如果没有自定义拷贝构造函数,系统会提供一个默认的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型的成员变量,调用其相应得拷贝构造函数,原型如下:string(con
2015-11-15 19:58:14 485
转载 使用VS2010创建动态链接库(DLL)
在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程。使用 DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。 本演练使用本机 C++。有关使用本机 C++ 创建静态库的演练,请参见 演练:创建和使用静态库。有关使用面向公共语言运行库的 Visual C++ 的
2015-11-15 19:40:31 559
转载 select函数详解
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函
2015-10-27 20:45:35 337
原创 BFS求解迷宫最短路径
本文使用BFS广度优先搜索算法实现求解迷宫的最短路径(C++),使用到了队列先进先出的性质,依次搜索路径直到找到目标出口(如果迷宫能走通)求解到的路径即为该迷宫的最短路径,本文使用vexmap一个map容器记录队列的搜索路径(记录队列路径的实现有点草率,可以再优化)。
2015-10-15 17:01:42 2249
原创 回溯法求迷宫问题
回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
2015-10-15 11:02:39 3587
转载 01背包问题的动态规划算法
01背包问题我最初学会的解法是回溯法,第一反应并不是用动态规划算法去解答。原因是学习动态规划算法的时候,矩阵连乘、最长公共子串等问题很容易将问题离散化成规模不同的子问题,比较好理解,而对于01背包问题则不容易想到将背包容量离散化抽象出子问题,从情感上先入为主也误以为动态规划算法不是解决01背包问题的好方法,实际上并不是这样的。另外,动态规划算法不对子问题进行重复计算,但是要自底向上将所有子问题都计算一遍,直到计算出最终问题的结果也就是我们要的答案,有点像爬山的感觉。
2015-10-14 04:09:39 3022 1
原创 CString简单介绍及使用
CString属于MFC的类,在标准C/C++库函数中不能直接对CString类型进行操作,CString所在的头文件是afx.h,利用MFC进行编程时,我们从对话框中利用GetWindowTest得到的字符串是CString类型的,可能很多人对string,CString的关系比较困惑,首先要明确,标准C中是不存在string类型的,string是标准C++扩充字符串操作的一个类,属于STL类库
2015-08-29 17:39:00 4383
原创 C/C++编程题之大数相乘
#include #include using std::map;/***************************************************************************** Prototype : multiply Description : 两个任意长度的长整数相乘, 输出结果 Input Param :
2015-08-27 19:58:51 537
原创 C/C++编程题之求int型数据在内存中存储时1的个数
求int型数据在内存中存储时1的个数思路:首先定义一个值为1的整数,即它的32位中只有第一位是1(因为同为int型不考虑符号位),每次左移一位,移动31次即把1移到了符号位此时其值为0,,每移一次与iValue做与运算判断这一位上的值是否是1.
2015-08-26 21:14:20 617
原创 C/C++编程题之渊子赛马
古有田忌赛马的故事,现在渊子也来赛一赛马。假设每匹马都有恒定的速度,所以速度大的马一定比速度小的马先到终点(没有意外!!)。不允许出现平局。最后谁赢的场数多于一半(不包括一半),谁就是赢家(可能没有赢家)。渊子有N(1≤N≤1000)匹马参加比赛。对手的马的数量与渊子马的数量一样,并且知道所有的马的速度。聪明的你来预测一下这场世纪之战的结果,看看渊子能否赢得比赛
2015-08-26 20:50:13 3953 1
原创 C/C++编程题之求两个数的最大公约数和最小公倍数
求两个数的最大公约数和最小公倍数方法:最大公约数使用辗转相除法求,最小公倍数等于两个数的乘积/最大公约数
2015-08-21 15:32:18 5248
原创 C/C++程序题之三天打渔两天晒网
俗话说三天打渔两天晒网,某人从2010年1月1日开始打三天鱼,然后晒两天网,然后再打三天鱼,再晒两天网,周而复始,输入任意一天,求该天是打渔还是晒网
2015-08-18 17:56:25 2419
原创 基本排序算法之快速排序
快速排序算法是一种划分交换的方法,它采用分治法进行排序。其基本思想是:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序
2015-08-13 18:32:10 447
原创 基本排序算法之插入排序
插入排序的基本方法是:每步将一个待排序的元素,按其排序码大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。可以选择不同的方法在已经排好序的有序数据表中寻找插入位置。依据查找方法的不同,有多种插入排序
2015-07-27 20:02:22 422
转载 守望者的逃离—贪心算法
【问题描述】恶魔猎手尤迪安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时,岛上的所有人都会遇难:守望者的跑步速度,为17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。
2015-07-25 15:57:50 847
原创 基本排序算法之冒泡排序
冒泡排序的基本方法是:设待排序元素序列中的元素个数为n,首先比较第1个和第二个元素,如果前一个元素大于后一个元素,则将两个元素互换;然后对第二个(可能是刚换过来的)和第三个元素做同样的处理;重复此过程直到处理完第n-1和第n个元素。我们称它为一趟冒泡排序,结果将最大的元素移到最后一个位置,其他元素也都向排序的最终位置移动,当然个别情况下元素有可能在排序中向相反的位置移动,但元素移动的总趋势是向最终...
2015-07-25 14:36:12 454
原创 extern关键字使用方法
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。
2015-07-15 16:52:29 410
More Effective C++(中文版).pdf
2018-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人