07. C/C++
文章平均质量分 80
hifrog
技术码农,做Solaris内核协议栈中网络新特性研发。
展开
-
算术表达式的自上而下语法分析及其实现(下)
(接中篇) 5. 自上而下语法分析程序的实现 经过上面4步精心的准备,最令人激动的时刻到了。一般《编译原理》课本上的代码大都是无法在机器上运行的伪代码,在这里,你将要看到的是一个实用的可以检查错误的可以执行求值的基于自上而下语法分析算法的计算算术表达式的程序。 不失一般性,我们规定算术表达式只可以进行整数的四则运算(含括号),这样我们需要扩充下面3个函数: int E_AddSub();原创 2004-01-30 19:22:00 · 4952 阅读 · 12 评论 -
C/C++中的日期和时间
C/C++中的日期和时间撰文/周翔摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单原创 2005-07-31 20:03:00 · 5696 阅读 · 1 评论 -
成员函数指针与高性能的C++委托(上篇)
成员函数指针与高性能的C++委托(上篇) Member Function Pointers and the Fastest Possible C++ Delegates 撰文:Don Clugston 翻译:周翔 引子 标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经原创 2004-07-03 14:49:00 · 16493 阅读 · 31 评论 -
成员函数指针与高性能的C++委托(下篇)
成员函数指针与高性能的C++委托(下篇) Member Function Pointers and the Fastest Possible C++ Delegates 撰文:Don Clugston 翻译:周翔 (接中篇) 委托(delegate) 和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个Subject/Observer设计模式的改进版[GoF,原创 2004-07-03 23:55:00 · 8712 阅读 · 8 评论 -
成员函数指针与高性能的C++委托(中篇)
成员函数指针与高性能的C++委托(中篇) Member Function Pointers and the Fastest Possible C++ Delegates 撰文:Don Clugston 翻译:周翔 (接上篇) 成员函数指针——为什么那么复杂? 类的成员函数和标准的C函数有一些不同。与被显式声明的参数相似,类的成员函数有一个隐藏的参数this,它指向一个类的实例。根据不同的编译原创 2004-07-03 23:23:00 · 7523 阅读 · 6 评论 -
STL实践指南(下)
STL实践指南 Practical Guide to STL作者:Jeff Bogan 翻译:周翔 (接中篇) 游标(Iterator) 我说过游标是指针,但不仅仅是指针。游标和指针很像,功能很像指针,但是实际上,游标是通过重载一元的”*”和”->”来从容器中间接地返回一个值。将这些值存储在容器中并不是一个好主意,因为每当一个新值添加到容器中或者有一个值从容器中删除,这些值就会失效。在某种程度上原创 2004-06-30 12:33:00 · 7648 阅读 · 8 评论 -
STL实践指南(中)
STL实践指南 Practical Guide to STL作者:Jeff Bogan 翻译:周翔 (接上篇) 另一种容器——集合(set) 这是微软帮助文档中对集合(set)的解释:“描述了一个控制变长元素序列的对象(注:set中的key和value是Key类型的,而map中的key和value是一个pair结构中的两个分量)的模板类,每一个元素包含了一个排序键(sort key)和一个值(v原创 2004-06-30 12:18:00 · 8542 阅读 · 5 评论 -
算术表达式的自上而下语法分析及其实现(中)
(接上篇)3. 产生式函数的改进前两节我们已经实现了自上而下语法分析算法和产生式函数的构造,在这一节,我着重阐述对产生式函数的运行效率和占用空间进行优化的方法。首先考察一下产生式E -> T+E | T-E | T的分析函数:void E_AddSub(){ T_MulDiv(); //调用非终结符T的产生式函数分析T If(ch==’+原创 2004-01-30 19:22:00 · 3429 阅读 · 6 评论 -
STL中的栈的扩展
C++标准模版库中的栈模版类提供了一些方法可以对栈进行简单的操作,其中提供的方法如下:bool empty( ) const;查看栈是否为空,如果为空返回true,否则返回false。void pop( );弹出位于栈顶的对象,栈中的对象个数减一。不返回任何值。void push(const Type& _Val);将Type类型的值_Val压进栈,栈中的对象个数加一。不返回任何值。原创 2003-11-29 23:08:00 · 1552 阅读 · 0 评论 -
STL实践指南(上)
STL实践指南 Practical Guide to STL作者:Jeff Bogan 翻译:周翔 译者注这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的原创 2004-06-30 11:35:00 · 3486 阅读 · 32 评论 -
算术表达式的自上而下语法分析及其实现(上)
学过编译原理的同学大概都知道对一个句子进行自上而下语法分析的方法。我参考了陈火旺院士的《高级程序设计语言编译原理》,在这篇文章里我主要是站在编译原理的角度讲述一种语法分析程序的实现的方法,通过对一个典型的例子——算术表达式的分析,从而使大家了解构造一个实用的语法分析程序的方法,同时,也为广大程序员提供一种解决实际问题的思路。本文包括以下内容:1. 算术表达式的产生式;2. 自上而下语法分析的算原创 2004-01-30 19:22:00 · 6499 阅读 · 10 评论 -
在C++中实现变长数组
在C++中实现变长数组1.变长一维数组这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做://文件名: array01.cpp#includeusing namespace std;int main(){ int len; cin>>len; //用指针p指向new动态分配的长度为len*sizeo原创 2003-12-15 01:27:00 · 4763 阅读 · 6 评论 -
趣味数学和C++
趣味数学和C++撰文/Zeeshan Amjad 翻译/周翔原文链接:http://www.codeproject.com/cpp/CPPMathFun.asp引子有些人认为自己已经厌倦了数学,因为人们需要灵活的大脑才能领会一些数学问题。但对于每个人来说,并不是数学的每个领域都是那么麻烦和令人厌原创 2005-08-02 22:51:00 · 3037 阅读 · 5 评论