在《C++编程思想》一书中对虚函数的实现机制有详细的描述,一般的编译器通过虚函数表,在编译时插入一段隐藏的代码,保存类型信息和虚函数地址,而在调用时,这段隐藏的代码可以找到和实际对象一致的虚函数实现。我们在这里提供一个C中的实现,模仿VTABLE这种机制,但一切都需要我们自己在代码中装配。之前在网上看到一篇描述C语言实现虚函数和多态的文章,谈到在基类中保存派生类的指针、在派生类中保存基类的指针来实现相互调用,保障基类、派生类在使用虚函数时的行为和C++类似
系统 2019-08-29 22:29:10 1996
CacheLab:ImprovingProgramLocalityINTRODUCTIONThisexercisedealswithoptimizingmemory-intensivecode.Imageprocessingisoneareathatbenefitsgreatlyfromsuchoptimizations.Inthisexercisewe'llbeoptimizingtwofunctions:rotate,afunctiondesigned
系统 2019-08-29 22:07:18 1996
递归这东西真是抽象,我看着看着算法,就囫囵吞枣地的写了下,写得囧了···这次先用递归实现先序,中序,后序遍历算法。先大概说下原理:我输入一大串字符,中间#就是代表了空,基本的储存结构就是二叉链表。主要就是二叉树的创建和三种顺序的遍历。二叉树的创建通过从左孩子开始创建不断递归,知道读取了#,开始创建对应的右孩子,继续递归。访问的时候对于三种顺序不过就是对于操作的顺序改变而已。对于下面的程序,按照图里面的二叉树建立方式:输入ABD#G###CE##FH###就
系统 2019-08-12 09:30:11 1996
观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。做到这一点的设计方案有很
系统 2019-08-12 09:29:46 1996
1#include2#include3#include4#include5#defineMAXN1606#defineMAXM207#defineMAXL2808usingnamespacestd;9intn,m;10boolland[MAXN][MAXM];11intput[MAXL][MAXM],cnt[MAXL],tmp[MAXM],size;12vectorG[MAX
系统 2019-08-12 09:27:41 1996
SublimeText2常用的快捷键(不包含插件快捷键)Ctrl+P打开文件搜索框,可以直接输入文件名搜索,或者输入@funcName可以直接到函数定义处,输入#key可以直接查找,输入:行数可以直接到某行(同快捷键Ctrl+G)Ctrl+Shift+P打开命令面板,可以查找一些功能。或者输入packagecontrol可以安装删除插件。Ctrl+D选词(按住继续选择下个相同的字符串)Ctrl+M光标移动至括号内开始或结束的位置Ctrl+Shift+M选择
系统 2019-08-12 09:26:53 1996
进度控制:#include#include#include//记录滚动条的当前位置intg_slider_pos=0;//滚动条的回调函数参数intpos是指当前滚动条所在位置voidon_changed(intpos){//输出滚动条当前所在位置printf("g_slider_posis%d\n",g_slider_pos);}intmain(intargc
系统 2019-08-12 09:26:42 1996
varnames=document.getElementById("names");varpwds=document.getElementById("pwds");functionsubtton(){if(names.value==""&&names.value.length==0||pwds.value==""&&pwds.value.length==0){returnfalse;}else{returntrue;}}如何判断账号密码是否为空登陆按钮点击
系统 2019-08-12 01:33:43 1996
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。Memento模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。大话设计模式---备忘录模式
系统 2019-08-12 01:33:16 1996
我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环,或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务,是没办法手工一个一个kill掉的。那么该如何结束这些进程呢?我的方法就是在运行爬虫进程时,记录该进程的Pid,然后在需要手动结束时,再用语句kill掉它们。foriin{1..100}donohuppythonNetEase_comms_
系统 2019-09-27 17:56:59 1995