自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 exit和_exit,atexit

exit, _exit, _Exit 都是进程终止函数。 atexit 是在执行 exit 函数时设置要作的工作,实际就是调用要在进程退出想让程序执行的函数。 其参数是要调用的函数地址。参数函数是一个无参数无返回值的函数。atexit可以登记32个函数,这些函数由 exit 函数自动调用,登记的顺序和调用的顺序相反,即最后登记的先执行。同一函数登记多次也

2016-06-30 22:12:14 360

原创 斐波那契数列

//非递归实现斐波那契数列#includeint Fibo(int n){ int f1 = 1; int f2 = 1; int f3 = 0; if (n <= 2) return 1; for (int i = 3; i <= n; i++) { f3 = f1 + f2; f1 = f2; f2 = f3; } return f3;}int ma

2016-06-30 21:11:10 206

原创 STL_list应用举例

#includeusing namespace std;#include#includeint main(){ int i; list ilist; cout << "size=" << ilist.size() << endl; //size=0 ilist.push_back(0); ilist.push_back(1); ilist.push_back(2); il

2016-06-30 19:51:10 727

原创 归并排序

#includeusing namespace std;#includevoid SinglePartSort(int* tmp, int* a, size_t start, size_t mid, size_t end){ assert(tmp); assert(a); size_t i = start, j = mid + 1, k = start; while (i <=

2016-06-30 18:23:29 170

原创 剖析C++对象模型

C++对象模型:#includeusing namespace std;class Base{public: virtual void fun1() { cout << "Base::func1()" << endl; } virtual void fun2() { cout << "Base::func2()" << endl;

2016-06-29 21:34:27 200

转载 C++ 虚函数表解析

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过

2016-06-29 21:31:39 242

原创 快速排序QuickSort

题目:快速排序//挖坑法#includeusing namespace std;#includeint Single(int *arr, int left, int right){ assert(arr); int tmp = arr[right]; //tmp作为坑 while (left < right) // { while (lef

2016-06-29 19:06:26 211

原创 判断大小端

题目:你的电脑存储方式是大端存储还是小端存储//判断大小端#include #includeint main(){ //union w //{ // int a; //4 bytes // char b; //1 byte //} c; //c.a = 1; //if (c.b == 1) // printf("It is Little_endian!\n"); /

2016-06-27 22:21:41 328

原创 求1-100之间9的个数

题目:求1-100之间有多少个9//1-100之间有多少个9#include#includeint main(){ int count = 0; for (int i = 1; i <= 100; i++) { if (i % 10 == 9) count++; if (i / 10 == 9) count++; } printf("共有%d个9\

2016-06-26 23:48:45 339

原创 初识STL

STL是C++标准库的最重要的组成部分,STL(标准模板库)不仅是一个可复用的组件库,而且是一个包含算法和数据结构的软件框架STL六大组件:1.容器(containers):各种数据结构2.算法(alogorithms):各种常用算法:sort,search,copy,erase3.迭代器(iterators):扮演容器与算法之间的胶合剂4.仿函数(functors):

2016-06-26 13:19:40 198

转载 stl分析之allocator

在STL中,Memory Allocator 处于最底层的位置,为一切的 Container 提供存储服务,是一切其他组件的基石。对于一般使用 STL 的用户而言,Allocator 是不可见的,如果需要对 STL 进行扩展,如编写自定义的容器,就需要调用 Allocator 的内存分配函数进行空间配置。在C++中,一个对象的内存配置和释放一般都包含两个步骤,对于内存的配置,首先是调用op

2016-06-25 23:39:53 374

原创 迭代器失效小分析

迭代器失效小实例:void PrintVector(vector& v){ vector::iterator it = v.begin(); while (it != v.end()) { cout << *it << " "; ++it; } cout << endl;}void TestVector(){ vector v; v.push_back(1);

2016-06-25 15:39:27 198

原创 STL_Iterator

迭代器iterator是一个很神奇的东西。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以胶合剂(iterator)将他们撮合在一起。#pragma once#include#include#include#includevoid TestVector(){ vector v; v.push_back(1); v.push_b

2016-06-25 14:19:06 203

原创 小型电话本

contact.h#ifndef __CONTACT_H__#define __CONTACT_H__#define MAX_NAME 20#define MAX_SEX 3#define MAX_TELE 12#define MAX_ADDR 20#define MAX 1000#includeenum op{ EXIT,

2016-06-24 20:17:35 239

原创 从一个字符串中提取子字符串 /字符串的逆置/查找字符第一次出现的位置

题目:使用C语言编写函数,从一个字符串中提取一个子字符串。原型:int substr(char dst[],char src[],int start,int len){}#include#include#includeint substr(char dst[], char src[], int start, int len){ assert(src); for

2016-06-24 17:02:01 644

原创 模拟实现memcpy/memmove/memset

1.模拟实现memcpy//memcpy#include#include#includevoid* my_memcpy(char* dst, char* src, int count){ assert(dst != NULL&&src != NULL); while (count--) { *dst++ = *src++; }}int main(){ char

2016-06-17 23:49:29 288

原创 [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr

1.模拟实现strcpy//strcpy#include#include#includechar* my_strcpy(char* dst, char* src){ assert(dst!=NULL&&src!=NULL); char* ret = dst; while ((*dst++ = *src++) != '\0') ; return ret;}int mai

2016-06-16 09:36:40 416

原创 [C语言]模拟实现C语言库函数atof

题目:模拟实现C语言库函数atof思路:1.要记录小数点后面的位数,遇到小数点后,将count++,count不为零后,开始计算个数。2.处理各种情况如 空格,正负号,异常。//编写一个函数,实现功能类似于atof,例如将“12.34”变成数字12.34#include#include#include#include //isspace头文件double my

2016-06-15 21:55:38 646 1

原创 [c语言] 模拟实现c语言库函数atoi

题目:模拟实现c语言库函数atoi//使用c语言编写函数,将一个数字字符串转换为对应的数字//功能类似于库函数的atoi,考虑异常输入#include #include #include #include #includeint my_atoi(char const *p){ int ret = 0; int a = 0; int flag

2016-06-15 18:43:01 371

转载 红黑树和AVL树的比较

1. 红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。   红黑树能够以O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构,能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。红黑树的算法时间复杂度和AVL相同,

2016-06-12 11:41:05 336

原创 [C语言]利用可变参数列表求平均值。

题目:设计一个函数可以求任意多个数的平均值(使用可变参数列表)思路:利用可变参数列表即可,可变参数列表是通过宏来实现的,这些宏定义在stdarg.h中。注意的是可变参数列表传参时,第一个传的参数的个数。1.定义一个va_list类型的变量 arg2.宏va_start(arg,num)---这个宏有两个参数,第一个参数为va_list类型的变量,第二个参数为可变参数列表之前

2016-06-08 00:16:38 1074

原创 字符串“student a am i”转换为"i im a student"

题目:字符串“student am a i”,现编写代码将字符串转换为“i am a stduent”,要求空间复杂度是O(1)思路  :用指针的形式,pstart指向字符串头,pend指向字符串尾,先将整个字符串进行逆序,逆序结束后,在进行每个单词的逆序,同样的道理,用指针指向单词的开始位置,如果字符串不为空,或者字符串不为\n,指针便向后移动,直到找到空格,然后将指针指向空格的

2016-06-05 23:56:10 1064

原创 常见的进程调度算法

进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。1.先来先服务(FCFS)调度算法原理:系统将按照作业到达的先后次序来进行作业调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中优先选择几个最先进入该队列的作业,将他们调入内存,为他们分配资源和创建进程。然后把它放入就绪队列。当在进程调度中采用FC

2016-06-05 23:41:19 793

原创 Linux下进度条小程序

进度条小程序原理:1.首先开辟一段空间,因为最后有 ‘\0’ ,所以可以开辟102个空间(101应该也可以)2.进行初始化3.字符串label是表示进度条状态的小东西,通过模除4可以表示这几个状态,当他们动起来的时候就好像在旋转(很有意思的方法)4.printf("\r")表示只回车不换行,这样就可以在一行中显示。5.[ -101s ] :如果不加符号,就会从右向左显示进度条,

2016-06-05 00:33:34 239

转载 进程控制块PCB

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。此书已经开源,阅读地址 

2016-06-05 00:28:06 304

原创 智能指针3---SharedPtr

SharedPtr:1.利用引用计数来解决拷贝构造和赋值运算符重载的问题。#pragma oncetemplateclass SharedPtr{public: SharedPtr() :_ptr(NULL) , _pCount(0) {} SharedPtr(T* ptr) :_ptr(ptr) ,_pCount(new int(1))

2016-06-04 15:48:09 258

原创 智能指针2--ScopedPtr

ScopedPtr:1.将拷贝构造和赋值运算符重载设为protected类型。2.定义构造函数和赋值运算符重载函数。#pragma oncetemplateclass ScopedPtr{public: ScopedPtr() //无参 :_ptr(NULL) {} ScopedPtr(T* ptr) :_ptr(ptr)

2016-06-04 15:45:40 251

原创 智能指针1---AutoPtr

AutoPtr: 其主要思路是管理权的转移,当有新对象指向这块空间时,将原指针置空,实现管理权的转移。#pragma once templateclass AutoPtr{public: AutoPtr() :_ptr(NULL) {} AutoPtr(T* ptr) :_ptr(ptr) {} //拷贝构造 AutoPtr(const AutoPtr

2016-06-04 15:38:17 236

原创 二进制位翻转:

思路:利用按位与(&)求得二进制每一位的数字,然后再与ret 进行 按位或(|)   运算。  ret左移,value右移//unsigned int reverse_bit(unsigned int value);//二进制位进行翻转#include#includeunsigned int reverse_bit(unsigned int value){ u

2016-06-03 15:50:30 857

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除