`
田庆阳
  • 浏览: 5962 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
在麻省理工的算法导论视频中,已对跳跃表讲述的很清晰,并且国内也有很多文章关于跳跃表的原理讲述的很明白,但是,在实现时,代码都是各种拷贝,看的云里雾里,自己写了一份,供大家参考(共计两个文件),感觉跳跃表实现的关键就是在查找目标元素时,能将“跳”体现处理,有不少网上给的参考代码,没有体现出跳跃的处理: // skip_list.h #include <assert.h>#include <iostream>const int skip_list_max_level = 32;class SkipListNode{    public:        SkipList ...
本部分纯属练手,参考对protobuf的理解,自己实现一套类似的结构处理,达成的目标:任意两个结构的数据都可以通过中间结构互换,如: struct Person {     int age;     std::string name; }per; struct Student {     int age;     std::string sex;     std::string name; }stu; Jack jack; jack = stu; jack.get(per); 备注: 1)中间结构是用自己的英文名Jack命名的; 2)本结构纯属练手,并没有实现 ...
代码是最好的解释工具,前提是代码写的能看懂,自知自己水平一般,欢迎各位大侠一起喷! 本线程池实现的内容是:对于收到的请求,先放到线程池队列中,然后其他线程在从池中取出元素处理。 文件目录: main.cpp    目标入口源文件 baselib       基础库目录,内含common、multi_threads、network_thread三个子目录,分别用于存放共用文件、多线程文件、网络编程文件(multi_threads、network_thread这两个模块都有独立的测试.cpp文件,可以模块自测)。 Makefile      一个简单的makefile文件
关于红黑树的删除方式,网络上是众说纷纭,自己总结整理了一下,关于红黑树的性质不再重述,直接上代码,请查看删除部分的注释(delete_node_adjust函数): #include <vector>#include <iostream>const int red_node = 2;const int black_node = 1;struct Node{    Node(int key) : data_value(key), node_color(red_node), parent(NULL), left_child(NULL), right_child(NULL ...
for_each的便利之处非常明显,它遍历容器中的每个元素,并调用用户指定的函数,对每个元素进行处理。 现在的问题时,我想对处理函数在传入一个参数? 本次提供两种解决的方案,一种是使用利用bind1st(bind2nd类似)实现;另一种是通过类(结构体类似)构造实现,不过有两点需要注意一下: 1)使用bind1st函数时,目标函数需要使用ptr_fun函数适配; 2)使用类构造函数对象时,类要提供对应的仿函数operator (); 从本质上讲,这两种方法分别是以函数对象和类对象的方式传入for_each,至于为什么要这么做,感兴趣的可以看下for_each的源代码,代码举例如下: void d ...
利用shared_ptr的共享引用计数、引用结束资源系统回收的机制,实现多线程对共享申请资源的访问和回收。 #include <vector> #include <memory> #include <pthread.h> #include <stdlib.h> #include <unistd.h> #include <iostream> using namespace std; class Student {     public:         Student()         {         }     ...
Global site tag (gtag.js) - Google Analytics