- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 二叉树的创建,前序,中序,后序,层序遍历
二叉树(binary tree)是另一种树形结构,它的特点是每个节点至多有两颗子树,并且其子树有左右之分,并且顺序不能颠倒。 主要用递归的思想完成创建,遍历等操作。 #include <iostream>using namespace std;#include <string>#include <queue>template <typename T>struct TreeNode{
2017-04-27 23:49:29 1672
原创 模重复平方算法
今天在做diffie_hellman加密中需要求一个数很多次方模另一个数,如 44^36mod97,这时用模重复平方算法就可以快速计算出结果。#include <iostream>using namespace std;size_t repeatMod(size_t base, size_t n, size_t mod){ size_t a = 1; while(n)
2017-04-24 23:23:01 8490 1
原创 数组全排列递归实现
将一个数组元素所有的排列方式列出。使用递归的方法所有元素的全排列转化为一部分。 例如: 1 2 3的全排列就是1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1,用递归的方法就是1加上2 ,3全排列,然后1和2换位,2加上1,3的全排列,然后把3换到最前面加上1,2的全排列,同样的如果是4个数就是第一位加上后面的全排列,然
2017-04-09 20:42:37 1868
原创 单例模式
单例模式保证一个类只有一个实例并提供提供一个访问他的全局访问点,该实例被所有程序模块共享。class Signalleton{public: static Signalleton* get_instance(); //定义一个接口 void set_var(int var); int get_var();private: Signalleton(); //将
2017-04-08 12:03:39 334
原创 静态成员函数访问构造函数
C++中,静态成员函数可以访问静态成员变量和静态成员函数,因为类的非静态成员函数会传入一个隐藏的this指针,这是大家都知道的。非静态的成员函数是属于类的,不属于某个对象,所以不含有this指针,所以只能调用静态成员函数和静态成员函数,但是今天在实现单例模式(一个类只能拥有一个对象时发现静态成员函数可以访问构造函数,难道构造函数是静态的吗?)class Signalleton{public:
2017-04-08 00:16:27 3096 5
原创 c++调用规范
与函数堆栈密切相关的就是函数调用规范,即调用约定。函数调用规范决定了函数调用的实参压栈,退栈及堆栈释放的方式,以及函数名改编的方案,也即命名规范,windows下常用的调用约定有:_cdecl: 这是C/C++函数的默认调用规范,参数从右向左依次传递并压入堆栈,由调用函数负责堆栈的清退,因此这种方式有利于传递可变的参数给被调用函数(因为只有调用函数才知道才知道他给被调用函数传递多少个参数及他们的
2017-04-04 23:23:51 552
原创 引用和指针的关系
引用在定义时必须初始化,指针没有要求 int &rNum; //未初始化不能通过编译 int *pNum; //可以 2. 一旦一个引用被初始化为指向一个对象,就不能再指向 其他对象,而指针可以在任何时候指向任何一个同类型对象 int iNum = 10; int iNum2 = 20; int &rNum = iNum; &rNum = iNum2; //不能通过 3. 没
2017-04-04 15:05:53 373
原创 模拟库函数实现字符串的操作
//求字符串的长度size_t Strlen(const char* string){ const char* str = string; assert(string); while (*string ++) ; return (string - str - 1);}//比较字符串大小int Strcmp(const char* str1, c
2017-04-03 21:48:40 301
原创 static和extern的关系
static:在c语言中,static可以修饰全局变量,局部变量和函数。 在c++中static修饰类的成员函数,那么这个函数属于这个类,而不是属于这个类的特定对象,static成员函数没有this指针。static修饰类中的变量,表示该变量是该类所有对象共享的,而且这个变量在储存空间中只有一个副本,静态成员函数只能访问静态成员函数和静态成员变量,不能访问非静态的。2.1. 修饰局部变量 一般
2017-04-03 16:14:52 1025
原创 二分查找方法
二分二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复
2017-04-03 11:52:23 655
原创 C++智能指针
1. 智能指针的由来C++中的动态内存需要用户自己来维护,动态开辟的空间,在出函数作用域或者程序正常退出前必须释放掉,否则会造成内存泄露,有时我们已经非常谨慎了,然防不胜防,为了更容易且更安全的管理动态内存,C++推出了智能指针(smart pointer)类型来管理动态对象。智能指针存储指向动态对象的指针,用于动态对象生存周期的控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露RAII(Re
2017-04-03 10:15:13 859
原创 原码,反码与补码,signed,unsigned char的存储与大小
原码:如果机器字长为N个bit,那么一个数的原码就是N位二进制数,最高位 是符号位,1代表负数,0代表正数。 反码: 正数的反码就是原码,负数的反码就是符号位不变,其他取反。补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。(计算机中的数都是以补码形式存储的) 补码的形式是为了进行正负数二进制的加减操作char为1个字节,8个bit位,看看内存中是怎么存储的
2017-04-01 00:18:57 1701
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人