NoFear

导航

2012年9月14日

摘要: 1 迭代器简单概念迭代器:一个能遍历容器所有元素的智能指针2 迭代器设计理念STL的中心思想是:容器和算法分开(通过C++的class templates和function templates),彼此独立设计,最后用迭代器把他们粘合起来。3 简单模拟代码【参考STL源码解析83页,可以编译通过】//File:mylist.h 一个模板链表#include <iostream>using namespace std;template <typename T>class ListNode{public: ListNode(T value,ListNode* next = N 阅读全文

posted @ 2012-09-14 10:32 Fear_Hao 阅读(503) 评论(2) 推荐(0) 编辑

2012年9月10日

摘要: 一般而言,我们习惯C++内存申请操作和释放操作如下:class Foo{};Foo * pf = new Foo; //1.申请空间2.调用构造函数delete pf; //1.析构函数2.释放空间但是为了精确分工,STL Allocator这两个阶段分开来。PS:以下代码不讨论多线程情况内存申请:alloc::allocate()负责。内存释放:alloc::deallocate()负责。对象构造:全局 ::construct()负责。对象析构:全局 ::destroy()负责。1.<stl_construct.h> 对象构造和析构关键代码【::construct()和::de. 阅读全文

posted @ 2012-09-10 12:59 Fear_Hao 阅读(1737) 评论(0) 推荐(1) 编辑

2012年9月3日

摘要: 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。最小不平衡子树:指离插入节点最近且以平衡因子的绝对值大于1的节点作为根的子树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1<=bf<=1; 很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(logn),所以每次的插入和删除都要确保二叉树的平衡,那么怎么保持平衡呢?插入操作 在平衡二叉树中插入结点与二叉 阅读全文

posted @ 2012-09-03 10:44 Fear_Hao 阅读(30588) 评论(4) 推荐(4) 编辑

2012年8月29日

摘要: //节点类struct LISTNODE{ int n_value ; int count; char *str_value ; LISTNODE * p_next ;};//哈希表struct HASHTABLE{ int n_tablesize ; LISTNODE ** p_node ;};void hashtable_clear(HASHTABLE* head_ht);LISTNODE* hashtable_find(char *str ,HASHTABLE* head);int hashtable_hash(char* str, int table... 阅读全文

posted @ 2012-08-29 12:58 Fear_Hao 阅读(3129) 评论(0) 推荐(0) 编辑

摘要: 参考链接:http://blog.csdn.net/morewindows/article/category/859207快排-冒泡-直接插入-直接选择-归并-堆排序[swap]两数交换 不使用中间变量inline void swap( int &a , int & b) { if (a != b) /需判断 可能会置0 { // a^b = c 对c用a可以解出b 对c用b 可以解出a a = a ^ b; //对c 用旧b解锁得到 a; ... 阅读全文

posted @ 2012-08-29 11:01 Fear_Hao 阅读(247) 评论(0) 推荐(0) 编辑

摘要: 参考链接:http://blog.csdn.net/morewindows/article/details/7370155void _swap (char * a, char *b){ char k = *a; * a = *b ; * b = k ;}int str_all_sort (char * str,int pos, int size ){ printf("%d" ,pos); if(pos == size) { printf("-"... 阅读全文

posted @ 2012-08-29 10:55 Fear_Hao 阅读(599) 评论(0) 推荐(0) 编辑

2012年8月12日

摘要: 之前一直把内存对齐弄错了,参考了下面两篇文章后,试着简单归纳下内存对齐规则http://blog.csdn.net/hairetz/article/details/4084088http://hi.baidu.com/smartroses/blog/item/9fcca936b79fdc320a55a9f9.html内存对齐主要有2大步骤:成员对齐和结构对齐成员对齐规则:结构体第一个成员从位移0开始存储eg:int [0-3] 从第二个成员开始,都要从min(pack值,this member size)的整数倍的位移开始存储 eg:#pragmapack(2)int... 阅读全文

posted @ 2012-08-12 12:05 Fear_Hao 阅读(376) 评论(0) 推荐(0) 编辑

2012年8月8日

摘要: DLL注入的一般步骤为:(1)取得注入进程ID dwRemoteProcessId;(2)取得注入DLL的完全路径,并将其转换为宽字符模式pszLibFileName;(3)利用Windows API OpenProcess打开宿主进程,应该开启下列选项: a.PROCESS_CREATE_THREAD:允许在宿主进程中创建线程; b.PROCESS_VM_OPERATION:允许对宿主进程中进行VM操作; c.PROCESS_VM_WRITE:允许对宿主进程进行VM写。(4)利用Windows API VirtualAllocEx函数在远程线程的VM中分配DLL完整路径宽字符所需的存储... 阅读全文

posted @ 2012-08-08 11:52 Fear_Hao 阅读(4567) 评论(0) 推荐(0) 编辑

2012年7月31日

摘要: 在Ubuntu中,最小化、最大化、关闭按钮默认是在左上角的,这个跟我们在Windows中的习惯可能会有冲突。修改方案如下:1、命令行中输入gconf-editor,打开配置编辑器。2、依次展开/apps/metacity/general/。3、编辑button_layout的键值,改为:menu:minimize,maximaze,close4、瞬间即可看到效果。PS:ubuntu 12.10直接在终端输入:gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximize,close' 阅读全文

posted @ 2012-07-31 15:09 Fear_Hao 阅读(1448) 评论(0) 推荐(0) 编辑

2012年7月26日

摘要: View Code string result; string str = "uid=1000012(as) gid=1000000(domain users) groups=1000000(domain users),1000015(ABD/users),1000015(ABD/s)"; int cur_pos = 0; int left_pos = 0; int right_pos = 0; int offset = 0; while(1) { left_pos = str.find('(',cur_pos); ... 阅读全文

posted @ 2012-07-26 15:49 Fear_Hao 阅读(324) 评论(0) 推荐(0) 编辑