- 浏览: 6279 次
- 性别:
- 来自: 上海
最新评论
文章列表
在麻省理工的算法导论视频中,已对跳跃表讲述的很清晰,并且国内也有很多文章关于跳跃表的原理讲述的很明白,但是,在实现时,代码都是各种拷贝,看的云里雾里,自己写了一份,供大家参考(共计两个文件),感觉跳跃表实现的关键就是在查找目标元素时,能将“跳”体现处理,有不少网上给的参考代码,没有体现出跳跃的处理:
// 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文件
红黑树的节点删除实现
- 博客分类:
- C++、STL
关于红黑树的删除方式,网络上是众说纷纭,自己总结整理了一下,关于红黑树的性质不再重述,直接上代码,请查看删除部分的注释(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()
{
}
...