- 博客(37)
- 收藏
- 关注
原创 cJSON的模拟实现
CJSON是C语言的一个编解码工具,JSON是一种轻量级数据交换格式(基于JavaScript的一个子集)CJSON主要功能:构建和解析 json格式,发送的数据用json封装,收到数据再以json格式解析优点:轻量级、速度快缺点:功能上不够强大
2017-08-24 13:26:06
1125
1
原创 智能指针auto_ptr、scoped_ptr、shared_ptr和weak_ptr
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。智能指针就是使用模板类,按照RAII的要求,自动化地管理动态资源的释放(不管理资源的创建),智能指针看上去是指针,实际上是赋予了定义的对象。
2017-08-07 16:17:44
727
原创 模拟实现C++STL中的string类
浅拷贝: 默认的拷贝构造函数(值拷贝)。会出现两个指针维护同一块空间的问题,可能会一个指针释放空间导致另一个指针访问非法空间。深拷贝: 自己构造拷贝构造函数,即自己开辟新空间再用memcpy进行值拷贝,用指针维护新开辟的空间写时拷贝: 在浅拷贝的基础上增加引用计数,若要修改同一块空间时,再开辟新空间并进行值拷贝 写时拷贝即实现operator[],缺点是用[]读的时候也进行拷贝
2017-08-06 21:10:55
792
原创 C++的封装、继承、多态
封装性: 所谓封装性就是将某些东西包装起来,外界无法直接使用,只能通过某些方式才能访问到。面向对象理念是万物皆对象,都有其特征和行为,我们把“成员变量”理解为特征,把“成员函数”理解为行为。被封装的特性只能通过特定的行为去访问。 访问限定符:public、protected、private体现了类的封装。继承: 继承是通过已有的类派生出新的类,新的类包含已有类的成员对象和成员函数,并且可以增加新的功能,已有的类被称为父类/基类,新的类被称为子类/派生类。多态:
2017-08-05 10:35:22
556
原创 TopK问题
本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出大家最喜欢吃的前k种水果。 void GetFavoriteFruit(const vector& fruits,size_t k);
2017-08-03 21:54:03
440
原创 模拟实现C语言字符串系列和memory系列库函数
strcpy、strncpy、strcmp、strncmp、strcat、strncat、memcpy、memmove
2017-08-02 12:07:06
644
原创 C语言实现C++的继承和多态
//C语言模拟实现继承和多态typedef void (*FUN)(); //通过函数指针来实现对成员函数的继承和多态struct _A //父类{ FUN _fun; //C语言struct不能包含函数,故需要在类外实现 int _a;};struct _B //子类{ _A aa; //通过子类包含父类对象实现继承 int _b;};//定义两个函数---通过函数指针来决定指向那个函数实现多态void _funA() //父类的同名
2017-07-28 22:15:13
557
原创 TCP的三次握手和四次挥手
TCP传输控制协议是一个面向连接的协议,在运行此协议进行数据传输前要进行连接的建立(三次握手),当数据传输完成,要进行连接释放(四次挥手)。
2017-07-25 12:39:52
415
原创 函数实现两个数的和,不能用+等算术运算符
Write a function that adds two numbers. You should not use + or any arithmetic operators.用位运算求两数的和通过指针的性质来求两个数的和
2017-07-14 23:50:37
1856
原创 Linux中的正则表达式和grep使用规范
正则表达式grep、egrep和正则表达式的配合使用概念: 正则表达式,又称规则表达式 。通常被用来检索、替换某个模式(规则)的文本。 正则表达式是一种逻辑公式,就是用一些特定字符或组合。组成一个“规则字符串”,通过该“规则字符串”来表达对字符串的过滤逻辑(匹配)。
2017-06-30 23:36:41
659
原创 数据通讯中的CRC校验
数据通讯中的CRC校验CRC(循环冗余校验)是一种数据通讯中常见的差错校验技术。其主要特征是信息字段的长度和校验字段可任意选定。
2017-06-16 16:50:26
3602
原创 c++的继承与虚继承
继承与虚继承在c++中继承是一重要特征,是面向对象复用的重要手段,通过继承建立一个类,共享公有的东西,再实现各自不同的属性。继承是类之间的关系模型。虚继承:解决菱形继承二义性和数据冗余最好的方法。
2017-04-09 20:45:47
522
原创 最长公共子序列(动态规划求法)
给定一个字符串s(1 <= s <= 1000),你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。
2017-03-11 12:20:10
1100
原创 顺序表的动态申请空间版本
顺序表的动态开辟空间版本。顺序表的动态版本与静态版本的区别在于:动态版本预先开辟比较小的空间,当空间不足时再追加若干空间,静态顺序表则一次开辟足够大的空间,静态顺序表的实现在我的上一篇博客。
2017-02-22 11:46:50
876
原创 qsort 快速排序
qsort可对各类数组进行排序,主要分为七大类。qsort要求提供一个比较函数(即第四个参数函数指针),是为了做到通用性更好一些。
2017-02-16 17:10:32
568
原创 C语言版扫雷
用C语言实现扫雷,首先应该有基本的思路,创建两个相同大小的数组,一个用于布雷(初始化为全0,布雷时将雷置为1),另一个给用户展示(初始化为星号,用户输入坐标后统计周围雷的分布并打印雷的个数)。由于需要统计每个坐标周围类的个数,所以将数组创建大一圈,以方便统计。若输了,打印出雷阵告诉玩家雷的分布。具体实现:game.h文件#ifndef __GAME_H__#define __GAME
2016-12-13 22:39:13
657
原创 实现一个函数,可以左旋字符串中的k个字符
实现一个函数,可以左旋字符串中的k个字符。AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAA
2016-12-11 13:43:03
695
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串
判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
2016-12-11 12:02:06
903
原创 写一个宏可以将一个数字的奇数位和偶数位交换
宏函数在c语言编程中有不可忽视的作用,并且数字二进制的奇偶位交换也比较常见,所以用宏函数来实现数字二进制的奇数位和偶数位交换不失为一个很好的方法。
2016-12-05 20:00:42
2169
原创 三子棋(C语言)
c语言版三子棋经过一段时间对c语言的学习,需要完成一个比较小的项目来锻炼自己对c语言的理解和应用。于是我选择了用c语言实现三子棋这一个难度适中的小项目!想要完整地、清晰地实现三子棋的功能。必须有一个清晰地思路,再将思路转化为一个个功能不同的函数,最终实现三子棋人和电脑对战的效果。首先我先构想需要实现的功能,将这些功能封装成没一个函数,函数的具体实现在后面的过程中具体完善。
2016-12-04 16:10:39
790
原创 C语言的基础学习及特殊例题的实现
在最近两周的时间里我对C语言的基础进行了仔细的学习,并用C语言的程序实现了一些比较有代表性的例子。使我对C语言的基础有了更加深入的了解!下面我给大家分享几个例题,希望对大家有所帮助。1. “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3 ? ,则153是一个“水仙花数”。在数论中,水仙花数(Narcissistic number)也称为自恋数、
2016-11-12 15:44:21
606
原创 初入优快云的第一篇博客
我的第一篇博客 大家好!我现在还是一名在校本科大学生,专业是计算机科学与技术,今天是我在优快云中写第一篇博客。因为我喜欢IT,我喜欢优快云,所以我会坚持在这里面分享我的快乐、忧愁、还有我学习的方法和收获。希望大家喜欢哦~ 到今天,我已经进入大三有一段时间了,刚进入大三每天的感觉都是迷茫的。由于是预备党员,所以我担任了大一新生的班助。每天从早忙到晚但不知道自己在忙些什么,又收获了
2016-10-27 21:02:10
458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人