- 博客(21)
- 收藏
- 关注
原创 ftp服务器搭建遇到的问题
1、在阿里云上搭建时,需要开启入方向20、21端口。2、若出现连上ftp服务器,但客户端“列表错误”时,有可能是客户端pc机防火墙的问题。
2019-03-30 10:19:42
547
翻译 最小生成树
#include <iostream>#include <algorithm>using namespace std;#define MAXVEX 20#define MAXEDGE 20#define INFINITY 65535typedef struct{ int arc[MAXVEX][MAXVEX]; int numVertexes, n...
2018-09-03 14:50:03
198
转载 找第k大的数
int findKth(vector<int> nums1, vector<int> nums2, int k){ int s1 = nums1.size(); int s2 = nums2.size(); if (s1 > s2) return findKth(nums2, nums1, k); if (s1 == 0) retur...
2018-05-21 09:06:22
307
原创 第6章——I/O复用
I/O复用使用场合:1、当客户处理多个描述符时(通常是交互式输入和网络套接字)。2、一个客户同时处理多个套接字是可能的。3、如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字。4、当一个服务器既要处理TCP,又要处理UDP。5、当一个服务器要处理多个服务或者多个协议。Unix下5种I/O模型:1)阻塞式I/O;2)非阻塞式I/O;3)I/O复用(select和poll);4)信号驱动式I...
2018-04-06 14:42:20
184
原创 第5章 TCP客户/服务器
当客户关闭连接,那么服务器的read函数接收到客户的FIN将导致其返回0。 正常终止客户和服务器的步骤: (1)当我们键入EOF字符时,fgets返回一个空指针,于是str_cli函数返回。 (2)当str_cli返回到客户的main函数时,main通过调用exit终止。 (3)进程终止处理的部分工作是关闭所有打开的描述符,因...
2018-04-06 14:06:41
151
原创 4 序列式容器
vector的工作流程:配置新空间,数据移动,释放旧空间。uninitialized copy :用于对只分配了内存,却还没有构造对象的内存上拷贝数据。template <class T, class Alloc = alloc> // 預設使用 alloc 為配置器class vector {public: // 以下標示 (1),(2),(3),(4),(5),代表 it...
2018-03-18 20:19:10
132
原创 STL源码剖析——迭代器概念和trait编程技巧
迭代器模式:提供一种方法,使之能够依序巡防某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达式。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一帖胶着剂将它们撮合在一起。template <typename T>class List{public: void insert_front(T value); void insert_end(T v...
2018-03-16 16:25:08
291
原创 空间配置器
为什么不说allocator是内存配置器而说它是空间配置器?因为空间不一定是内存,空间也可以是磁盘或其他辅助存储介质。你可以写一个allocator直接向硬盘取空间。set_new_handler: 当operator new申请一个内存失败的时候,会调用set_new_handler设置的函数,参数为0,则抛出异常 。new运算符和operator new() ...
2018-03-13 15:25:51
141
翻译 条款4:用empty来代替检查size()是否为0
应该首选empty()的构造,而且理由很简单:对于所有的标准容器,empty()是一个常数时间的操作,但对于一些list实现,size()花费线性时间。主要原因是对于list特有的splice()函数。 list提供了不用拷贝数据就能把元素从一个地方合并到另一个地方的能力。它提供了高效的合并。他们知道从一个list合并一个区域到另一个list可以在常数时间内完成。 如果si...
2018-03-12 12:21:28
114
原创 第3条:确保容器中的对象拷贝正确而高效
容器中保存了对象,但并不是你提供给容器的那些对象。而当从容器中取出一个对象时,你所取出的也并不是容器中所保存的那份。当向容器中加入对象时,存入容器的是你所指定的对象拷贝。取出对象时,也是拷贝。 当然,在存在继承关系的情况下,拷贝动作会导致剥离。(即导致派生类特有的部分丢失) 使拷贝动作高效、正确,并防止剥离问题发生的一个简单办法是使容器包含指针而不是对象...
2018-03-11 12:49:44
172
原创 第一条:慎重选择容器类型
标准STL序列容器:vector、string、deque、list标准STL关联容器:set、multi、map、multimap非标准序列容器:slist、rope。slist是一个单向链表。rope是一个“重型“”string非标准关联容器:hast_set、hash_multiset、hash_map、hash_multimapvector是默认应使用的序列类型;当需要频繁地在序列中间插入...
2018-03-11 12:24:42
135
原创 动态规划-背包问题
//#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <ccomplex>#include <algorithm>#include "head.h"using namespace std;const int maxn = 100;int dp[maxn][maxn];int...
2018-03-11 12:01:05
135
原创 并发编程——第2章
有件事需要注意,当把函数对象传入到线程构造函数中时,需要避免“最令人头痛的语法解析”(C++’s most vexing parse, 中文简介)。如果你传递了一个临时变量,而不是一个命名的变量;C++编译器会将其解析为函数声明,而不是类型对象的定义。 例如:std::thread my_thread(background_task()); 这里相当与声明了一个名为m...
2018-03-05 21:58:14
149
翻译 maxflow,mincut
graph-cut算法是基于有向图的一种最优分界线的自动生成算法,常用于前景背景分割,立体视觉,纹理合成及图像拼接等领域。graph-cut算法中要求所处理的图为有向图,可将无向图中正反两个方向都赋予相同的权值即可得到可采用graph-cut算法处理的有向图,其算法流程可以简单表示如1.Find the path from source to sink2.While (path exists)3....
2018-03-03 15:19:28
432
翻译 原型模式
概念Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。3)根据对象克隆深度层次的不同,有...
2018-03-02 20:38:35
160
原创 C++编程思想——异常
不捕获异常1、terminate()函数 如果没有任何一个层次的异常处理器能够捕获某种异常,一个特殊的库函数terminate()(在头文件<exception>中定义)会被自动调用。默认情况下,terminate()调用标准C库函数abort()使程序执行异常终止二退出。在下列两种情况下terminate()函数也会执行:局部对象的析构函数抛出异常时,栈正在进行清理工作...
2018-03-02 13:07:07
153
翻译 建造者模式
概念 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。 对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复...
2018-03-02 12:11:13
137
转载 二分检索的各种变体
#include using namespace std;//二分查找int binarySearch(int arr[], int len, int key){ int left = 0; int right = len - 1; int mid; while (left <= right) { mid = (left + right) /
2018-01-19 13:36:56
176
原创 53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4],the contiguous subarray [4,-1,2,1] has
2018-01-11 20:59:06
134
原创 快速排序
void swap(vector &vec, int i, int j){ int temp = vec[i]; vec[i] = vec[j]; vec[j] = temp;}int partition(vector &vec, int low, int high){ int pivot = vec[low]; while (low<high) { while (low
2017-12-04 14:32:47
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人