![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++笔记
木一亢
这个作者很懒,什么都没留下…
展开
-
c++图(邻接矩阵、临界列表实现)
邻接列表:#pragma once#include <list>#include <vector>#include <algorithm>#include "Graph.h"using std::vector;using std::list;using std::find;template <typename T>class gr...原创 2020-02-13 15:15:16 · 227 阅读 · 0 评论 -
c++hash实现(+ELF算法)
Simple_Hash:#pragma onceclass Simple_Hash{ int* data; int count; int capacity=10000;public: Simple_Hash() { data = new int[capacity](); count = 0; } void insert(int key, int val) { ...原创 2020-01-22 22:56:54 · 209 阅读 · 0 评论 -
B树(二叉搜索树)实现
头文件:#pragma once#ifndef BST_H#define BST_Hnamespace CPP { template<typename K, typename V> class TreeNode { public: K key; V val; TreeNode* left; TreeNode* right; TreeNode(K k...原创 2020-01-21 23:09:16 · 95 阅读 · 0 评论 -
二叉堆实现(堆排序、 数据结构和算法的动态演示网站推荐)
数据结构和算法的动态演示:https://visualgo.net/zhheap.h:#pragma once#include <vector>#include <iostream>#include <queue>using namespace std;template<typename T>class Heap{ vector&...原创 2020-01-20 20:38:39 · 178 阅读 · 0 评论 -
vs2019 生成包含dll的exe
代码:#include<windows.h>#include<cstdlib>#include<ctime>using namespace std;HWND hwnd = GetForegroundWindow();int main() { int x = GetSystemMetrics(SM_CXSCREEN); int y = ...原创 2020-06-24 17:31:47 · 4630 阅读 · 1 评论 -
c++vector和数组互换(兼容c)
vector和数组的互换void printArr(int arr[], int n){ cout << "vector传数组" << endl;}printArr(vec.data(), vec.size());int arr[10] = { 1,2,3,4,5,6,7 }; vector<int> vec2(arr,arr+sizeof(ar...原创 2020-06-24 17:32:45 · 990 阅读 · 0 评论 -
c++异常+匿名对象
自定义异常#include <iostream>using namespace std;class base{public: base() { id = NULL; } virtual void printError() { cout << "base异常" << endl; } char* id; ~base(){}};c...原创 2019-12-28 18:50:26 · 148 阅读 · 0 评论 -
c++简单io操作
#include <iostream>#include <fstream>using namespace std;int main(){ fstream file; fstream f2; file.open("a.txt", ios::out | ios::in); f2.open("b.txt", ios::out); char str[512]="A...原创 2019-12-26 22:58:01 · 116 阅读 · 0 评论 -
指针数组使用与释放
#include <iostream>using namespace std;int main(){ int *p[10] = { NULL }; for (int i = 0; i < 10; i++) { p[i] = new int[10]; for (int j = 0; j < 10; j++) { *(p[i]+j) =10*i+j...原创 2019-12-07 20:44:29 · 1218 阅读 · 0 评论 -
链栈和数组队列
main.cpp:#include <stdio.h>#include <stdlib.h>typedef int TYPE;struct node{ TYPE data; node* next;};node* node_create(){ node* temp = (node*)malloc(sizeof(node)); temp->data...原创 2019-11-27 21:01:15 · 129 阅读 · 0 评论 -
双向链表
doubleLinkList.h:#pragma oncetypedef int Type;struct Node{ Type data; Node* prev; Node* next;};struct LinkList{ Node* head; Node* tail; int size;};//双向链表的初始化void LinkList_new(LinkLis...原创 2019-11-27 19:43:21 · 106 阅读 · 0 评论 -
单链表
main.cpp#include <stdio.h>#include "LinkList.h"#pragma warning(disable : 4996)#define N 10int main(){ int arr[N]; int index; int val; printf("输入10个数据:"); for (int i = 0; i < N; i+...原创 2019-11-26 22:18:12 · 108 阅读 · 0 评论 -
顺序表
复习顺序表#pragma warning(disable : 4996)void test(){ int index; array* arr1 = arr_init(); //初始化顺序表 while (1) { printf("1:创建数据 \n"); printf("2:插入数据 \n"); printf("3:删除数据 \n"); printf("4:清...原创 2019-11-22 20:43:31 · 94 阅读 · 0 评论 -
模板方法模式与钩子
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。...原创 2019-10-21 15:12:22 · 367 阅读 · 0 评论 -
c++深度寻路算法
通过栈来存储路径,辅助地图更改方向与记忆路是否走过#include <iostream>#include <stack>#include <Windows.h>using namespace std;#define ROWS 12//x#define COLS 12//ystruct MyPoint { int x; int y; //MyP...原创 2019-10-11 22:27:39 · 180 阅读 · 0 评论 -
c++排序算法(冒泡、选择、插入、归并、快排)
1.冒泡相当于一个遍历2.选择是依次寻找最小、次小的数字,放在正确的位置3.插入相当与发牌员一张张发牌,根据来牌插入对应的位置4.归并采用分治法,排序一个个子序列,然后依次合并5.快排随机取一个数为基准,然后就是比基准小的在左边,比基准大的放到右边,这样交换完左边都是比基准小的,右边都是比较基准大的,这样就将一个数组分成了两个子数组,然后再按照同样的方法把子数组再分成更小的子数组,直到不能...原创 2019-08-09 21:57:06 · 358 阅读 · 0 评论 -
卡特兰数和约瑟夫环
卡特兰数:设h(n)为卡特兰数的第n项, 令h(0)=1,h(1)=1,则满足h(n)= h(0)*h(n-1)+h(1)h(n-2) + … + h(n-1)h(0) (n>=2)可以推出h(n)=h(n-1)(4n-2)/(n+1);递推的解为h(n)=C(2n,n)/(n+1) (n=0,1,2,…)简单应用:一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出...原创 2019-08-15 12:47:02 · 81 阅读 · 0 评论 -
Linux下C程序设计 多进程聊天
TCP套接字通信服务器接收2个用户(int cfd[2])客户端通信并记录日志服务器:#include <stdio.h>#include <strings.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <ne...原创 2019-08-12 21:06:45 · 355 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。1.根据前序序列确定根节点2.查找中序序列中根节点的位置,在根节点之前的是左子树,后面的是右子树3.把左子树的前序序列和中序序列,右子树的前序序列和中...原创 2019-09-06 17:17:17 · 71 阅读 · 0 评论 -
青蛙跳台阶
题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。f(n)为n级台阶的跳法数1.记青蛙跳1级过后有f(n-1)种方法2.记青蛙跳2级过后有f(n-2)种方法3.则f(n)=f(n-1)+f(n-2),已知f(1)=1,f(2)=1递归通过不了,后面用循环做的.class Solution {public:...原创 2019-09-06 17:25:52 · 81 阅读 · 0 评论 -
二叉树前序创建、层序创建、前(中、后、深度、广度)序遍历,寻找祖先节点
#include <iostream>#include <queue>using namespace std;typedef struct BTreeNode* BTree;struct BTreeNode { int data; BTree lch; BTree rch;};BTree createBTree() { BTree root = NUL...原创 2019-09-10 11:18:00 · 188 阅读 · 0 评论 -
c++策略模式
headfirst上的例子,学习之余练习总结一下。策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。把行为想成是“一族算法”,代表鸭子能做的事情。代码:Duck.h#pragma once#include <iostream>using namespace std;class Behavior {};class...原创 2019-09-12 10:18:32 · 125 阅读 · 0 评论 -
C++观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。总结:观察者模式提供了一种对象设计,让主题和观察者之间松耦合,它们两个对象之间松耦合,可以互相交互,但是对于彼此的细节不太清楚。松耦合:主题只知道观察者实现了Observer接口,不需要知道观察者的其他信息。在任何的时候,都可以新增观察者或删除观察者。如果在其他地方需要使用主题和观察者...原创 2019-09-12 17:31:46 · 166 阅读 · 0 评论 -
c++String实现
c++简单实现了一下String类,类名CString.CString.h#pragma once#include <iostream>using namespace std;class CString{public: CString(const char* str = NULL); CString(const CString& str); ~CString...原创 2019-09-24 17:46:54 · 495 阅读 · 0 评论 -
c++初始化顺序
1.c++类成员变量的初始化顺序代码:#include <iostream>using namespace std;class A{public: A():q(5),n(0), m(n + 2) { //n = 0; //m = n + 2; } ~A() {}; void print() { cout << "m:" <<...原创 2019-09-25 11:38:21 · 673 阅读 · 0 评论 -
TCP数据包解析注意点
1.链路层数据单元为帧,网络层数据单元为包,传输层数据单元为段。2.一个TCP数据包在传输的过程中,实际传输的数据单元包括包头和数据部分。包头为各层在数据头加上的层层头部说明,在实际网络环境中,一个MTU(一般为1500)包括了包头和数据部分,包头部分在每个传输过程的节点中都在进行着解析和封装。3.TCP传输过来的数据是无边界的,存在着粘包的现象。由于TCP有一个缓冲区,发送端往其中写数据,为...原创 2019-09-26 23:19:50 · 1203 阅读 · 0 评论 -
滑动窗口(双指针)和求排列数
1.滑动窗口滑动窗口为在一串序列里面截取满足要求的子串,对于这类问题可以用2个指针来截取数据串。模板:for(int i = 0, j = x; i < n; i++){ //j范围有效 & 设计某个性质,使的j具有某种单调性 while(j < m && check(i, j)) jxx //这道题目的具体逻辑}例:...原创 2019-10-01 22:55:06 · 184 阅读 · 0 评论 -
QQ群发器
选中需要群发的分组上面的组别,复制需要群发的内容,运行程序。key_event() 一个模拟按键的函数FindWindow()获取某一个窗口句柄GetForegroundWindow()获取当前活动窗口#include <stdio.h>#include <Windows.h>void PressKey(BYTE vkey){ keybd_event(vke...原创 2019-10-08 23:42:49 · 377 阅读 · 0 评论 -
字符串匹配算法(暴力匹配、KMP、Sunday)
代码#include <iostream>#include <cstring>using namespace std;int* GetNext(char* p);//暴力匹配int ViolentMatch(char* s,char* p) { int sLen = strlen(s); int pLen = strlen(p); int i = 0, ...原创 2019-08-14 09:41:57 · 322 阅读 · 0 评论