- 博客(280)
- 资源 (14)
- 收藏
- 关注

原创 数据结构学习1:赫夫曼编码
一 算法注意:1:数据结构(C语言版本) 严蔚敏,书籍中的算法,有一处错误。p = HT+1才是对的。2:动态申请堆内存的数组,用于存储树结点。下标为0的单元,未用。
2020-06-12 15:58:15
320
原创 【复习】C++11特性
作用:堆内存指针+引用计数(控制器,由默认的释放规则,可以自定义),用于堆内存管理,当对象离开生命周期时,引用计数降至为0,释放堆内存。
2024-03-06 01:29:24
407
原创 linux makefile学习
linux makefile 教程转载地址:https://blog.youkuaiyun.com/mingchong2005/article/details/78688738
2021-03-25 16:55:20
291
原创 遍历多维数组
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };for(int i=0;i<12;i++)printf("%d ",_______);在空格处填上合适的语句,顺序打印出a中的数字答案:a[i/6][(i/3)%2][i%3];
2021-03-10 17:39:07
319
转载 折半查找(二分查找)
转载地址:添加链接描述代码实现:#include <stdio.h>#include <stdlib.h>#define keyType inttypedef struct { keyType key; // 查找表中每个数据元素的值 // 如果需要,还可以添加其他属性}ElemType;typedef struct{ ElemType *elem; // 存放查找表中数据元素的数组 int length; // 记录查找表
2021-03-09 14:30:49
518
转载 冒泡排序
转载冒泡排序#include <stdio.h> #define ARR_LEN 255 /*数组长度上限*/#define elemType int /*元素类型*/ /* 冒泡排序 *//* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 *//* 2. 对所有元素均重复以上步骤,直至最后一个元素 *//* elemType arr[]: 排序目标数组; int len: 元素个数 */void bubbleSort (elemType arr[], int
2021-03-07 22:59:36
148
原创 C++虚函数表学习
学习网站C语言中文网:C++虚函数表(多态的实现原理)细节,请参考学习网站原理代码#include <iostream>using namespace std;class A{public: int i; virtual void func() {} virtual void func2() {}};class B : public A{ int j; void func() {}};int main(){ cout
2020-12-07 13:10:40
146
1
原创 网络编程学习5:三次握手和四次挥手
一、 三次握手和四次挥手状态图二、报文图注意:确认号ack等于对端的序号seq加1。即ack = seq(对端)+ 1;
2020-12-06 20:02:49
158
原创 异步send,如何监控发送失败?
方法异步send,执行完函数,不会阻塞的等待返回值和消息。此时,要监控它的成功或者失败。需要使用到网络模型select或者iocp等,通过监控系统的处理消息,来监控发送的结果。学习文章非阻塞socket之send的使用—异步send...
2020-08-20 08:58:07
645
原创 c++的自增操作符:i++和++i
自增操作符i++是先计算表达式的值,然后i再增加1。++i是i增加1,然后再计算表达式的值。1 实现i++// 使用引用传递,返回的是未修改的val值,实质的val值已经自增。int operator++(int &val){ int temp = val; val += 1; return temp;}++iint operator++(int val){ val += 1; return val;}2 应用// 用erase删除map中的元素#incl
2020-07-27 11:01:26
413
原创 STL学习2:map
mapmap本质是一类关联式容器,属于模板类关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。map内部数据的组织,map内部自建一颗红黑树(一种严格意义上的平衡二叉树),这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。map接口1、插入用insert函数插入pair数据、用insert函数插入value_ty
2020-07-27 10:26:48
178
原创 STL学习1:vector
vectorSTL封装了许多复杂的数据结构算法和大量常用的数据结构操作。vector封装数组,list封装链表,map和set封装二叉树(红黑树)vector是线性容器,它的元素严格按照线性序列排列,和动态数组很相似。和数组类似的是,它的元素存储在一块连续的存储空间中,这也意味着不仅可使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问。和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间。STL中vector和list的区别...
2020-07-25 18:54:12
241
原创 设计模式学习2:单例模式
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。1 设计Singletonstatic Instance() SingletonOperation() GetSingletonData()static unique Instance singletonData2 实现class Singleton{public: static Singleton * Instance();protected: Singleton();private:
2020-07-25 16:07:14
185
原创 设计模式学习1:观察者模式
观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所以依赖于它的对象都得到通知并被自动更新。1 设计Subject(目标)-目标知道它的观察者。可以有任意多个观察者观察同一个目标。-提供注册和删除观察者对象的接口Observer(观察者)-为那些在目标发生改变时需获得通知的对象定义一个更新接口2 实现class Subject;class Observer{public: virtual ~Observer(); virtual void Update(Su
2020-07-25 10:32:43
161
原创 网络编程学习4:TCP协议
TCP协议网络通信协议中最重要的就是TCP/IP协议1 网络模型ISO七层网络模型层数名字主要功能对应的典型设备传输单位7应用层提供应用程序间通信计算机:应用程序,如FTP、SMTP程序级数据6表示层处理数据格式、数据加密等计算机:编码方式,如图像编码、URL字段传输编码程序级数据5会话层建立、维护和管理会话计算机:建立会话,如session认证、断点续传程序级数据4传输层建立主机端到端连接计算机:进程和端口数据段(segm
2020-07-24 18:36:46
361
原创 字符串接口学习:strcat、strcmp、strcpy
字符串接口:strcat、strcmp、strcpystrcat:字符串拼接char *strcat(char *dest, const char *src);strcmp:字符串比较int strcmp(const char *s1,const char *s2);strcpy:字符串拷贝char *strcpy(char* dest, const char *src);1 strcatchar * strcat(char * dest, char * src){ assert(
2020-07-24 09:16:29
251
1
原创 网络编程学习3:IOCP模型
IOCP模型IOCP(I/O completion port,I/O完成端口)是伸缩性最好的一种I/O模型。I/O完成端口是应用程序使用线程池处理异步I/O请求的一种机制。处理多个并发异步I/O请求时,使用I/O完成端口比在I/O请求时创建线程更快更有效。I/O完成端口最初的设计时应用程序发出一些异步I/O请求,当这些请求完成时,设备驱动将把这些工作项目排序到完成端口,这样,在完成端口上等待的线程池便可以处理这些完成I/O。完成端口实际上时一个Windows I/O结构,它可以接收多个对象的句柄,如
2020-07-23 20:31:26
431
原创 网络编程学习2:select模型
选择(select)模型select模型是一个广泛在Winsock中使用的I/O模型。称它为select模型,是因为它主要是使用select函数来管理I/O的。1 接口// select函数可以确定一个或者多个套接字的状态。如果套接字上没有网络事件发生,便进入等待状态,以便执行同步I/O。int select( int nfds, // 忽略,仅是为了与Berkeley套接字兼容 fd_set * readfds, // 指向一个套接字集合,用来检查其可读性 fd_se
2020-07-23 18:56:27
337
原创 网络编程学习1:IO阻塞和非阻塞
套接字模式套接字模式简单的决定了操作套接字时,Winsock函数是如何运转的。Winsock以两种模式执行I/O操作:阻塞和非阻塞。在阻塞模式下,执行I/O的Winsock调用(如send和recv)一直到操作完成才返回。在非阻塞模式下,Winsock函数会立即返回。阻塞模式套接字创建时,默认工作在阻塞模式下。例如,对recv函数的调用会使程序进入等待状态,直到接收到数据才返回。非阻塞模式应用程序调用ioctlsocket函数显式地让套接字工作在非阻塞模式下,如下代码所示。u_long ul =
2020-07-23 18:08:03
274
原创 设计模式学习-抽象工厂模式
学习文章C++设计模式-抽象工厂模式C++设计模式系列原理产品的基类,有若干类型。工厂基类,定义若干生产产品的接口。示例代码
2020-07-01 10:51:31
1825
c语言的控制台应用程序的图形库EaxyX
2014-03-05
用c语言编写的具有人性化界面的俄罗斯方块
2014-03-03
用c语言写的具有图形化界面的通讯录程序
2014-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人