随笔分类 - 基本C,C++技术区
数据结构学习之二叉树小结
摘要:在关于数据结构中,运用最多的树莫过于二叉树,当然,也有B树,B+树,红黑树...虽然种类很多,但是基本的还是二叉查找树。这里我们就二叉树的一些基本特征作一些讨论,然后给出一些基本的二叉查找树的常用操作代码。实现二叉树的方法可以是在每个节点除数据外还要有一些指针,使得该节点的每一个儿子都有一个指针指向它。二叉树的典型声明如下(为了方便起见,二叉数里的元素都是int型):#include<std...
阅读全文
c++程序调用c函数 and otherwise zz
摘要:c++程序调用c函数a.ca.hb.cppb包含a.h得到了a中函数的原型,a.c独立编译成.o文件但是链接的时候b中调用a.c中的函数老是undefinedreference1. b文件中extern"C"{#include"a.h"}2. 我在a.h中用了这样的结构#ifdef__cplusplusextern"C"{#endif//简单的logexternboollog_init(const...
阅读全文
Volatile-Correctness,让编译器帮你检测竞争条件 zz
摘要:volatile——编写多线程程序的好帮手Volatile-Correctness,让编译器帮你检测竞争条件Andrei Alexandrescuye_feng译 并不是我故意想弄糟你的心情,但是在这期专栏里,我们将讨论多线程编程这一话题。正如上一期Generic里所说的,编写异常安全(exception-safe)的程序是非常困难的,但是和编写多线程程序比起来,那简直就是儿戏。 多线程的程序是出...
阅读全文
如何转换全角字符到半角字符?zz对于所有编程来说这个是通用的。。
摘要:我们知道,在windows中,中文和全角字符都占两个字节,并且使用了ascii chart 2 (codes 128?C255)。我们可以凭这一点来一个个检测用户输入的是否是中文和全角字符。实际上,全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格)。如半角a为65,则全角a则是163(第一个字节)、193(第二个字节,128+65)。而对于中文来讲,它的第...
阅读全文
类对象成员函数的const增强zz
摘要:类对象成员函数的const增强类对象成员函数的const增强 C++语言的2.0版为const配置了若干新的应用,在C++的早期版本中,成员函数的调用可能改变const类对象的值。这肯定是个问题了。如果我们不允许使用const类的成员函数,我们还要const对象干什么用,为了让语言成为完备的,在2.0版本后引入了const成员函数,它的一个作用就是让const对象能够调用的成员函数。编译程序保证c...
阅读全文
高效计算一个bytes有几个byte是1?
摘要:http://www-db.stanford.edu/~manku/bitcount/bitcount.html
阅读全文
编译器优化 → C关键字volatile → memory破坏描述符zz
摘要:“memory”比较特殊,可能是内嵌汇编中最难懂部分。为解释清楚它,先介绍一下编译器的优化知识,再看C关键字volatile。最后去看该描述符。 1、编译器优化介绍 内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU...
阅读全文
yahoo在线答题
摘要:发信人: stickying (心痕), 信区: job标 题: yahoo在线笔试题(c语言)发信站: 饮水思源 (2005年11月06日18:57:49 星期天) 辛辛苦苦把题做完,系统提示说“由于长时间未操作,系统失去联系”,艾...可能每个人的题是随机的吧 当前位置: 选择试题类型>>答题 C试题类型:C试题 | 试题:55道试题(50道选择题,5道问答题)注意: 答题过程如果您不提交答...
阅读全文
UNIX系统开发-gcc参数详解zz
摘要:[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename...
阅读全文
只有obj或其它文件,但没有cpp,如何才能编译出exe文件zz
摘要:编程工具: vc++6.0 操作系统: win95 OSR2 做了一个实验,先用VC创建一个SDI程序,然后将DEBUG目录中的.EXE和工程目录中的.cpp文件删除。其它文件都保留,在这种情况下,只要用VC将工程正常调入,编译,就可以生成EXE文件。(只不过VC会给你一些警告,忽略它)但我想你可能不是这种情况,这太简单了。也许你除了OBJ和资源文件之外其它什么文件都没有,如果你...
阅读全文
#pragma 预定义
摘要:还是来自csdn的帖子:主 题: 探讨:内存对齐作 者: typedef_chen ((名未定)(我要骗人))等 级: 信 誉 值: 100所属论坛: C/C++ C++ 语言问题点数: 50回复次数: 1发表时间: 2005-04-02 22:53:27 朋友帖了如下一段代码: #pragma pack(4) class TestB { pub...
阅读全文
C++完美实现Singleton模式zz
摘要:Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。 1. 标准的实现 class Singleton { public: static Singleton * Instance() { if( 0== _instance) ...
阅读全文
一些面试题目zz
摘要:1。在C++中有没有纯虚构造函数? 2。在c++的一个类中声明一个static成员变量有没有用? 3。在C++的一个类中声明一个静态成员函数有没有用? 4。如何实现一个非阻塞的socket? 5。setsockopt, ioctl都可以对socket的属性进行设置,他们有什么不同? 6。解释一下进程和线程的区别? 7。解释一下多播(组播)和广播的含义? 8。多播采用的协议是什么? 9。在c++中纯...
阅读全文
对UTF8编码的初步认识
摘要:在网络中有很多地方都有采用UTF8编码,由于要编写与邮件服务端有关的程序,而邮件服务端有些地方用到了UTF8编码,所以对它有了初步的认识!它其实和Unicode是同类,就是在编码方式上不同!首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的!我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节!而UTF8编...
阅读全文
使用可变(mutable)成员隐藏实现细节
摘要:关键字 mutable 是一个奇怪的修饰符(specifier),它只能够用于一个类的非静态数据成员。下面我将讨论 mutable 的语义和用法,但是首先我要解释一下 C++ 对象模型的一个关键概念。 对象的状态 一个对象的状态由其非静态数据成员的值构成,因此,修改一个数据成员将会改变整个对象的状态。将一个成员函数声明为 const 能够保证它不会改变对象的状...
阅读全文
数组的定义和引用zz
摘要:第一课 本课主题: 数组的定义和引用 教学目的: 掌握数组的定义及引用方法 教学重点: 数组的初始化与数组元素的引用方法 教学难点: 初始化,引用 授课内容: 一、为什么使用数组? 1、使用数组的好处 便于处理批量数据。 2、何时需要使用数组? 有大量同类型数据要处理。 二、如何使用数组? 1、先定义数组 一维数组的定义方式为: 类型说明符 数组名[常量表达式] 例:int a[10];...
阅读全文
C++箴言:多态基类中将析构函数声明为虚拟zz
摘要:有很多方法可以跟踪时间的轨迹,所以有必要建立一个 TimeKeeper 基类,并为不同的计时方法建立派生类 class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); ...};class AtomicClock: public TimeKeeper { ... };class WaterClock: public TimeKeeper...
阅读全文
如何使类不能被继承zz
摘要:如果大家熟悉java的话应该知道java中有一种类不能被继承,那就是final类.这种类有很多用处,尤其是在大的项目中控制类的继承层次. 使子类数量不至于爆炸.在使用了多继承的类层次中这也是防止出现菱形继承层次结构的一个好办法. 要实现一个不能被继承的类有很多方法. 主要的思路就是使子类不能构造父类的部分,这样子类就没有办法实例化整个子类.这样就限制了子类的继承. 所以我们可以将父类的构造函数声...
阅读全文
定义纯虚析构函数(pure virtual destructor)zz
摘要:纯虚成员函数通常没有定义;它们是在抽象类中声明,然后在派生类中实现。比如说下面的例子: class File //an abstract class{public: virtual int open(const string & path, int mode=0x666)=0; virtual int close()=0;//...}; 但是,在某些情况下,...
阅读全文
[经验杂谈]与大虾对话:领悟设计模式zz
摘要:[译者按] 本文根据发表在CUJ Expert Forum上的两篇文章编译而成。C/C++ User's Journal是目前最出色的C/C++语言专业杂志,特别是在C++ Report闭刊之后,CUJ的地位更加突出。CUJ Expert Forum是CUJ主办的网上技术专栏,汇集2000年10月以来C++社群中顶尖专家的技术短文,并免费公开发布,精彩纷呈,是每一个C/C++学习者不可错过的...
阅读全文