- 博客(18)
- 收藏
- 关注
原创 asio异步库
异步,即线程提交io请求后直接返回,事件完成后再进行通知。在不同的操作系统中有不同的事件监听机制,linux采用epoll,windows采用iocp,unix采用kqueue。Asio使用前摄器模式(proactor),通过宏来实现在各个不同的平台上调用不同的底层实现。注:(以下对于asio相关描述均基于linux系统)Asio只提供一种异步的机制,内部维护队列op_queue(线程安全),符合生产者消费者模型。一年前写的了,不知不觉过了这么久,想了想还是发出来,算是自己曾经阅读的痕迹。
2023-06-03 17:54:01
1101
1
原创 c++ windows下基于TCP的socket编程 入门
服务器端:socket() ——创建1个socketbind() ——绑定IP地址、端口号等信息到socket上listen() ——监听,设置允许最大连接数accept() ——接受客户端的请求连接send() 和 recv() / read() 和 write() ——收发数据closesocket()——关闭网络连接//服务器 server.cpp#define _WINSOCK_DEPRECATED_NO_WARNINGS //inet_ntoa()函数已经过期
2020-07-06 12:28:01
1211
1
原创 c++滑动窗口最大值
前提:数组长度为n,窗口大小为k。暴力的时间复杂度是O(nk) vector<int> comp(vector<int> v) { vector<int> ans; for(int i = 0; i+1 < v.size(); i++) ans.push_back(max(v[i],v[i+1])); return ans; } vector<int> m
2020-07-04 18:33:46
514
原创 字符串 三级指针
#include<bits/stdc++.h>int main(){ char *c[]={"HELLO","NEW","WORLD","SAYHI"}; char **cp[]={c+3,c+2,c+1,c}; char ***cpp = cp; printf("%s",**++cpp); printf("%s",*--*++cpp); printf("%s",*cp...
2020-03-29 16:08:28
429
原创 pygame-飞机大战
运行效果图:import pygameimport randomimport timeimport osfrom os import pathWIDTH = 480HEIGHT = 600FPS = 60#每秒显示多少帧POWERUP_TIME = 5000COLOR = (255,174,200)WHITE = (255,255,255)BLACK = (0,0,...
2020-03-08 21:38:47
334
1
原创 C++: const和指针
1.将变量的地址赋给指向const的指针此时,可以通过num修改值,不能用指针p去修改变量的值。int num = 10;const int * p = # //p指向const int,*p的值不能被修改 (即不能用p修改num)num = 15; // num是变量,这样是可以修改的2.将const变量的地址赋给指向const的指针此时,不能通过num来修改值...
2020-02-15 00:30:40
264
原创 getline()与get()
1.getline()getline() 函数读取整行,通过换行符来确定输入结尾。然后丢弃换行符。//1.作为istream中的类方法char name[20];cin.getline(name,20);//把一行读入到name数组中,这行字符不超过19个//2.使用string类中的一个友元函数string str;getline(cin,str);2.get()get(...
2020-02-11 22:47:23
204
原创 图的基础定义
连通分量:相互可达的结点称为一个连通分量割顶:删除某个点后,使图不再联通桥:删除某个边后,使图不再联通双连通:任意两点之间至少存在两条“点不重复”的路径(此时内部无割顶)双连通分量:点-双连通的一个极大子图(BCC)边-双连通分量:边-双连通的一个极大子图...
2018-12-04 20:24:57
205
转载 堆——二叉树
堆——特殊的完全二叉树最大堆:父结点大于子结点最小堆:父结点小于子结点最小堆的较大数下移://最小堆的向下调整 #include&lt;bits/stdc++.h&gt;using namespace std;int h[11]={0,1,6,34,77,213,279,311,333,345,567};int n=10;//传入一个需要向下调整的结点编号i,这里传入1,即...
2018-11-20 19:04:34
430
原创 p1m2(二分)
题目2018百度之星 http://acm.hdu.edu.cn/showproblem.php?pid=6383二分操作次数满足有序性,用二分。代码#include<cstdio>#include<algorithm>#include<iostream>using namespace std;int a[300005];in...
2018-08-19 10:47:04
334
原创 Delivery Service(LCA倍增+差分)
题目网址https://acm.ecnu.edu.cn/problem/3631/LCA倍增倍增利用了二进制的特性;LCA为求公共祖先。 利用倍增的典型算法还有RMQ。题目代码#include<cstdio>#include<vector>#include<string>#include<cstring>#inclu...
2018-08-14 18:53:28
825
原创 Channel On Live(离散化)
题目网址:https://acm.ecnu.edu.cn/contest/103/problem/C/离散化:1.unique函数:c=unique(t+1,t+1+n)-t-1; 此为去重函数,12335去重后为12355,即去掉重复的,后面的不变 c记录的是去重后,数组的不重复长度,即4 2. lower_bound函数:pos1= lower_bound(b+1,b...
2018-08-13 09:26:32
348
原创 归并排序 (递归)
归并排序:-采用分治法(divide-and-conquer) 分治法将问题分(divide)成一些小的问题然后递归求解, 而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之 -递归+合并即为归并递归void mergearray(int a[],int first,int mid,int last,int temp[]){...
2018-08-10 10:53:40
188
原创 全排列
举例123的全排列:123,132,213,231,321,312 全排列的个数为 n!STL 实现 char s[50]; cin>>s; int k=strlen(s); sort(s,s+k); cout<<s<<endl; while(k--){ next_permutati...
2018-08-10 10:52:54
251
原创 莫队算法(区间查询)
适用情况1.只查询,不修改 2.已知 [ L, R ] 的答案,可在O(1)时间内求出 [L,R-1] , [L,R+1] , [L-1,R] , [L+1,R] 3.该算法复杂度为 O(n*sqrt(n) )分析思路由上知,计算 [ L‘,R’ ] 的时间为 | L-L’|+| R-R’|,将询问看作点,则所用时间即为两点的曼哈顿距离。若按顺序计算,每个询问都看成一个点,则...
2018-08-09 10:26:44
656
原创 排序
桶排序快,简单,但是浪费空间memset(num,0,sizeof(num));for(int i=1;i&lt;=n;i++){ scanf("%d",&amp;t); num[t]++;}for(int i=1000;i&gt;=1;i--) for(int j=1;j&lt;=a[i];j++) { printf("%
2018-08-03 16:26:17
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人