cpp -- 24




1 2 3

200x200


创建型模式概述创建模式是对对象实例化的抽象,他们帮助一个系统独立于如何创建、组合和表示系统中的对象,而是将对象实例化工作委托给另一个对象这些创建型模式有一个共同的特点,就是他们封装了系统使用哪些具体的

#技术帖    #cpp    #龙潭书斋    #java   
概述数组是 C 语言中最常用的数据类型之一,它使用整块内存,按固定大小分割,所以很容易定位到指定序号的元素,因此,在所有容器中,数组的随机访问速度是最快的但是 C 语言的数组是不能动态扩展的,所以 nginx 对他进行了一个封装,成为了类似于 C++ STL 中 vector 的数据类型具有以下优点:访问速度快元素个数不确定,并可以动态扩充内存池统一管理内存 nginx 动态数组相关的声明和定义分别在:ngx_array.h 和 ngx_array.c 两个文件中 动态数组结构 -- ngx_array_t// struct ngx_array_t // nginx 数组结构 {{{ typedef struct { void *elts; // 数组起始位置 ngx_uint_t nelts; // 数组元素个数 size_t size; // 单个元素大小 ngx_uint_t nalloc; // 空间能够容纳元素个数 ngx_pool_t *pool; // 内存池 } ngx_array_t; // }
#技术帖    #算法    #c++    #cpp   

200x200


简介我们知道,对于一棵高度为h的二叉查找树上的各种基本操作而言,其时间复杂度都是O(h)的,因此,怎样减小树的高度成为了降低时间复杂度的必要手段,因此,我们需要去找寻一种新的数据结构,让构造的二叉查找

#技术帖    #算法    #c++    #cpp   
简介poll 与 select 函数类似,但在处理流设备时,poll 可以提供额外的信息函数原型int poll (struct pollfd *fdarray, unsigned long nfds, int timeout); 定义于 poll.h 中若超时返回0,出错返回-1,否则返回就绪描述符数目参数说明fdarray第一个参数是一个结构体数组头指针,数组的每个元素是一个 pollfd 结构:struct pollfd { int fd; short events; short revents; }; 要测试的条件由 events 成员指定,函数调用结束后在 revents 成员中返回描述符状态与 select 的值-结果参数不同,这样做无须每次调用后重新为参数赋值 events、revents 常量events、revents 可选常量常量值events可选revents可选说明输入处理   POLLINYY普通或优先级带数据可读POLLRDNORMYY普通数据可读POLLRDBANDYY优先级带数据可读POLLPRIYY高优先级数据可读输出处理&
#读书笔记    #技术帖    #linux    #unix   
问题C++ programming language 第309页的例子:template <class C> class Basic_ops //基本操作类 { public: bool operator== (const C&) const; bool operator!= (const C&) const; // ... const C& derived () const //获得操作访问权 { return static_cast <const C&> (*this); } }; template <class T> class Math_container : public Basic_ops < Math_container<T> > //具体实现的容器类 { public: size_t size() const; T& operator[] (size_t); const T& operator[] (size_t) const; // ... }; 这样,使得有关容器的基本操作定义可以与容器本身的定义分开,而且只需定义一次&n
#读书笔记    #技术帖    #c++    #cpp   
问题在C++ programming language一书的第九章中描述了C++的单一定义规则,ODR,根据这一规则,“一个inline函数必须在需要用他的每个编译单位里通过完全一样的定义来定义”并且举了例子:file1.c:inline int f(int i) { return i; } file2.c:inline int f(int i) {return i+1;} 书中说这个例子是非法的,因为在两个编译单位中的定义不完全相同那么,下面是我写的一个代码,也是我的问题:我的程序分为main.cc、func.cc和function.h三个文件,main.cc和func.cc中定义了两个如上面反例所写的同名inline函数,他们的函数体并不相同,function.h中是这个inline函数的声明:/* * file: main.cc * author: 龙泉居士 * date: 2012-10-17 04:37 */ #include <iostream> #include "function.h" using namespace std; int main () { f(3); return 0; } inline void f (int a) { cout <<
#读书笔记    #技术帖    #c++    #cpp   
概述有三种方法可以定位标准IO流ftell 和 fseek 函数,这两个函数假定文件的位置可以存放在一个长整型中ftello 和 fseeko 函数,他们使用off_t类型代替了长整型fgetpos 和 fsetpos 函数,是由ISO C引入,用抽象数据类型fpos_t记录文件位置 ftell、fseek、rewindlong ftell ( FILE *stream ); 返回当前文件位置指示,调用出错返回-1L int fseek(FILE *stream, long offset, int whence); 调用成功返回0,否则返回非0值 用于二进制文件时,必须指定一个字节的offset,以及解释这种偏移量的方式 whence与lseek函数的相同:若whence是SEEK_SET, 则将该文件的偏移量设置为距文件开始处offset个字节若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可以为正或负若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可以为正或负对于文本文件,offset只能取两种值,0(文件起始处)或是f
#读书笔记    #技术帖    #linux    #unix   
标准IO库提供了两个函数进行二进制IO操作,与普通IO操作不同的是,二进制IO往往需要读写整个结构,一次循环处理一个字节,而不是仅仅某个字符,而如果通过调用 fputs 和 fgets 实现,由于二进制IO过程中可能会提供 null 字节而不能正确工作 size_t fread (void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp); size_t fwrite (const void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp); 定义于 <stdio.h> 头文件中,返回读或写的对象数 ptr 指向需读写对象的首地址size 为对象大小nobj 为对象个数fp 为读/写文件指针注:restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇
#读书笔记    #技术帖    #linux    #unix   
非格式化IO一旦打开了流,则可以在三种不同类型的非格式化IO中进行选择,对其进行读写操作: 每次一个字符的IO 每次一行的IO 一次读或写一行,则使用 fgets 和 fputs,每行以一个换行符终止。 直接IO(二进制IO) fread 和 fwrite 函数支持直接的IO操作,每次IO读或写固定数量的对象,这两个函数常用于从二进制文件中每次读或写一个结构  每次读或写一个字符的IO1、输入函数int getc ( FILE *stream ); int fgetc ( FILE *stream ); int getchar ( void ); 定义于stdio.h头文件中,若成功则返回下一个字符,若已到达文件结尾或出错则返回EOF 区别:getchar等价于getc(stdin)getc可以被系统实现为宏,而fgetc不行,这意味着,fgetc一定是一个函数,而getc可能是一个宏,因此fgetc可以取得函数地址并作为另一个函数的参数,但fgetc的调用时长可能会长于getc 为了判断返回EOF时函数是否出错,必须调用 ferror 或 feof 函数int ferror(FILE *stream); int feof(FILE *stream); 定义于stdio.h头文件中,条件为真
#读书笔记    #linux    #unix    #c++   
1 2 3



京ICP备15018585号