
C/ C++
文章平均质量分 77
touzani
这个作者很懒,什么都没留下…
展开
-
A bit of fun: fun with bits
Introduction Most of the optimizations that go into TopCoder contests are high-level; that is, they affect the algorithm rather than the implementation. However, one of the mos转载 2007-10-06 01:50:00 · 2493 阅读 · 0 评论 -
C与C++
C语言是C++的子集,C++是C语言的超集。C++是在C语言的基础上,添加了面向对象和泛型编程的功能后,扩展而成的。C语言是一种可移植的系统语言,起源于Unix操作系统的开发。C语言是一种灵活高效的高级程序设计语言,但是同时也具有一些面向机器的低级语言特征,所以有人称它是一种中级语言。1)起源虽然早在1957年4月IBM(John W. Bacus)就推出了第一个高级程序设计语原创 2007-06-05 14:02:00 · 6840 阅读 · 2 评论 -
C++类型转换关键字(*_cast)
在C/C++语言中用 (type) value(在C++还可以采用type(value))来进行显式类型转换(explicit type conversion),常常又被称为强制转换(cast投射/铸模)。这种转换的正确性完全掌握在程序员手中,传统上强制转换往往被过度使用,成为C++程序犯错的一个主要根源。为了减少强制转换的副作用,并且在查错时使程序员能够快速定位(总是最值得怀疑的)强制转换原创 2007-06-04 15:09:00 · 5857 阅读 · 2 评论 -
根据前序遍历序列和中序遍历序列构造二叉树
根据前序遍历序列和中序遍历序列可以构造唯一的二叉树。假设序列为string型根据前序遍历的特点, 知前序序列(Pre)的首个元素(Pre[0])为根(root), 然后在中序序列(In)中查找此根(Pre[0]), 根据中序遍历特点, 知在查找到的根(root) 前边的序列为左子树, 后边的序列为右子树。 设根前边有left个元素.. 则又有, 在前序序列中, 紧跟着根(root)的left原创 2007-06-04 10:43:00 · 9053 阅读 · 0 评论 -
“最晚辈派生”类和虚基初始化
如果虚基类存在一个构造函数, 虚基类的使用并不是很简单。为了便于理解,引入一个新术语:最晚辈派生类(most-derived)。见下面代码:#includeiostream>using namespace std;class base...{protected: int a;public: base(int aa) // constructor ...原创 2007-06-08 01:08:00 · 1423 阅读 · 0 评论 -
C++ 命名空间namespace
命名空间在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名原创 2007-06-04 16:14:00 · 82149 阅读 · 16 评论 -
C++ 关键字 explicit, export, mutable
explicit如果A类有某个构造函数的单个输入参数,是B类(包括基本数据类型)的对象或引用,则C++的编译器会在需要A类形参的函数调用中,自动调用该构造函数,将B类实参隐式地转换为A类实参。这种自动类型转换的好处是,避免了定义函数的两个重载版本,代价是隐式调用构造函数会增加调用开销,并可能会带来其他问题。在标准C++中,新增加了关键字explicit(显式/清楚/明确),(只能)用在原创 2007-06-04 15:17:00 · 10489 阅读 · 0 评论 -
C/C++堆、栈及静态数据区
五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系转载 2007-06-01 02:30:00 · 1101 阅读 · 0 评论 -
ASCII表
ASCII值 控制字符 ASCII值 控制字符 ASC原创 2007-06-01 02:19:00 · 1140 阅读 · 0 评论 -
详细解说STL string
0 前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string insert, replace, erase 2 string 和 C风格字符串 3 string 和 Charactor Traits 4 string 建议 5 小结 6 附录 7 参考文章0 前言: string转载 2007-08-31 04:27:00 · 1674 阅读 · 1 评论 -
扩展C++, Java, C#
Java是1991年,由Sun公司的加拿大人James Gosling等人为小型消费品电子(如电视遥控器等)项目Green开发一种简单的程序设计语言。开始叫Oak(橡树),因为与Sun的另一产品商标同名,1994年改为Java(爪哇——位于印度尼西亚西南的一个大岛,盛产咖啡豆,也是印尼首都雅加达的所在地)。虽然在小型消费品电子产品上失败,但是Java却特别适合网络语言程序的开发。1原创 2007-06-05 18:54:00 · 1555 阅读 · 0 评论 -
C++ 关键字 typeid, typename
类型标识符(typeid)标准C++的一个新特征是RTTI(Run-Time Type Information运行时类型信息),它为程序在运行时确定对象类型,提供了一种标准方法。在标准C++中,有三个支持RTTI的元素:1. 关键字dynamic_cast(动态强制转换):操作符dynamic_cast将一个指向基类的指针转换为一个指向派生类的指针(如果不能正确转换,则返回原创 2007-06-04 17:14:00 · 11305 阅读 · 0 评论 -
Prim最小生成树算法
MST-PRIM(G, w, r)// G: graph, w: weight, r:root 1 for each u ∈ V [G] 2 do key[u] ← ∞ 3 π[u] ← NIL 4 key[r] ← 0 5 Q ← V [G] 6 while Q ≠ Ø 7 do u ← EXTRACT-MIN原创 2007-09-19 13:51:00 · 2351 阅读 · 0 评论 -
计算程序运行时间
#include clock_t start =clock(); /**//* start timing */ clock_t end=clock(); double time=((double)(end-start))/(double)CLK_TCK; printf("%g ", time);原创 2007-09-19 13:32:00 · 1244 阅读 · 0 评论 -
泛型编程与STL
泛型编程(generic programming通用编程/类属编程)和面向过程以及面向对象一起,是混合型程序设计语言C++所包含的三种编程风范(paradigm范例/范型)。传统C++的泛型编程,仅仅局限于简单的模版技术。标准C++新引入了容器(container)、迭代器(iterator)、分配器(allocator)和STL(Standard Template Library标准模板库)原创 2007-06-08 14:32:00 · 5614 阅读 · 1 评论 -
STL容器
容器(container)是装有其他对象的对象。容器里面的对象必须是同一类型,该类型必须是可拷贝构造和可赋值的,包括内置的基本数据类型和带有公用拷贝构造函数和赋值操作符的类。典型的容器有队列、链表和向量等。在标准C++中,容器一般用模版类来表示。不过STL不是面向对象的技术,不强调类的层次结构,而是以效率和实用作为追求的目标。所以在STL并没有一个通用的容器类,各种具体的容器也没有统一原创 2007-06-08 14:27:00 · 2290 阅读 · 0 评论 -
STL算法分类
按是否修改容器中的内容和排序及相关操作,给标准库中的算法函数进行分类: 非修改性序列操作(12个) 循环原创 2007-06-08 14:11:00 · 2324 阅读 · 0 评论 -
STL之map
映射容器map是一种关联容器,表示的是对偶(键,值)的序列。它支持唯一Key类型的键值,并提供对另一个基于键的类型T的快速检索。map还提供双向迭代器。映射容器map在标准C++中,对应于map类,被定义在头文件中。映射:键→值,值 = 映射[键](似f:x → y,y = f(x))。即,可以通过映射,由键来快速定位值。namespace std { // 取自C++2003标准te原创 2007-06-08 14:18:00 · 2885 阅读 · 0 评论 -
STL迭代器
迭代器 http://blog.youkuaiyun.com/touzani/archive/2007/06/08/1643859.aspx迭代器(iterator)是连接容器和算法的纽带,为数据提供了抽象,使写算法的人不必关心各种数据结构的细节。迭代器提供了数据访问的标准模型——对象序列,使对容器更广泛的访问操作成为可能。泛型编程的关键所在,就是如何找到一种通用的方法,来访问具有不同结构的各种容器中原创 2007-06-08 14:02:00 · 9616 阅读 · 4 评论 -
详细解说 STL 排序(Sort)
作者Winter 0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论 都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会 发现,面对不同的需求你需要一次又一次去用转载 2007-09-04 01:29:00 · 1411 阅读 · 0 评论 -
C++概述
上一篇 关于C: http://blog.youkuaiyun.com/touzani/archive/2007/06/05/1639124.aspx作为结构化的面向过程的编程语言,C已经是非常优秀的了,它简单、高效、灵活、功能强大。但是,随着软件开发的规模越来越大,所针对的问题和系统越来越复杂,对软件维护和重用的需求越来越高。仅仅靠面向过程的编程技术,就显得有点力不从心了。因此,针对问题的面向对象编程技原创 2007-06-05 16:24:00 · 2709 阅读 · 0 评论 -
将g++编译器集成到VC2005中
在Visual C++ 2005中,如何调用其它编译器编译cpp文件呢? 换句话说,如何把其它编译器集成到VC2005的IDE中呢? 下面介绍一种简单的方法。另外,在VC2005的IDE中是不能编译单个.cpp文件的,除非把它放在工程中。但是,我们可以通过调用外部工具实现编译单文件。把cl.exe添加到外部工具的方法这里就不介绍了,大家参照下面添加gcc的方法,再查阅cl.exe的参数转载 2007-05-26 23:30:00 · 1498 阅读 · 0 评论 -
学习STL map, STL set之数据结构基础
作者: winter STL map和set的使用虽不复杂,但也有一些不易理解的地方,如:为何map和set的插入删除效率比用其他序列容器高? 为何每次insert之后,以前保存的iterator不会失效? 为何map和set不能像vector一样有个reserve函数来预分配数据? 当数据元素增多时(10000到20000个比较),map和set的插入和搜索速度变化如何?转载 2007-05-23 06:11:00 · 1638 阅读 · 0 评论 -
Power up C++ with STL: Part IV (Implementing real algorithms)
I strongly recommend you to read the three articles below first.Power up C++ with STL: Part I (introduction, vector)Power up C++ with STL: Part II (string, set, map)Power up C++ with STL: Part III (m转载 2007-08-20 03:43:00 · 2832 阅读 · 1 评论 -
Power up C++ with STL: Part III (more on STL)
I strongly recommend you to read the two articles below first.Power up C++ with STL: Part I (introduction, vector) Power up C++ with STL: Part II (string, set, map)Creating Vector from Map As you alr转载 2007-08-20 03:32:00 · 1665 阅读 · 0 评论 -
Power up C++ with STL: Part II (string, set, map)
See Power up C++ with STL: Part I (introduction && vector) String There is a special container to manipulate with strings. The string container has a few differences from vector. Most of the differenc转载 2007-08-18 16:15:00 · 2427 阅读 · 0 评论 -
Power up C++ with STL: Part I (introduction, vector)
Perhaps you are already using C++ as your main programming language to solve TopCoder problems. This means that you have already used STL in a simple way, because arrays and strings are passed to your转载 2007-08-18 02:43:00 · 3970 阅读 · 0 评论 -
ISO C99中的宽字符工具
(说明:彩色部分为(类型、结构、宏和函数的)名称,其中红色的为较常用的,绿色为不太常用的)常用的宽字符函数:#include size_t wcslen(const wchar_t *s); int wprintf(const wchar_t * format, ...);int wscanf(const wchar_t * format, ...); int转载 2007-05-18 02:05:00 · 1922 阅读 · 0 评论 -
标准模板库(STL)介绍
作者: Scott Field来源:最优秀的STL学习网站本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过! 0 前言. 这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。 当我第一次打算写一转载 2007-05-16 13:26:00 · 922 阅读 · 0 评论 -
关于C++ template 的初始化
新手可能会遇到编译没问题,自己写的模版类, 把声明(头文件.h)跟实现(cpp)分开, 编译时包括了模版的头文件, 编译没问题, 但连接不通过...是因为,如果你编译的代码模块中没用到那模版类的话, 它是不会帮你实例化的...而在另一个编译好的obj文件要用到模版类的时候, 会提示找不到那个符号..解决办法是需要你手动实例一个你将要用到类, 或者把模版的实现跟声明都在同一个文件解决办法详见下文.原创 2007-05-15 23:25:00 · 3228 阅读 · 0 评论 -
c++ STL 轻松入门基础
作 为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花 一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL "什么是STL?",假如你对STL还知之甚少,那么转载 2007-05-15 22:31:00 · 1457 阅读 · 0 评论 -
C++ BigInteger (beta version)
#include deque>#include #include #include #include using namespace std;class DividedByZeroException ...{};class BigInteger...{ private: vectorchar> digits; bool sign; //原创 2007-08-11 13:49:00 · 8831 阅读 · 2 评论 -
选择排序(Selection Sort)
选择排序(Selection Sort)是说,每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去。比如班上的MM搞选美活动,有人叫我给所有MM排个名。我们通常会用选择排序,即先找出自己认为最漂亮的,然后找第二漂亮的,然后找第三漂亮的,不断找剩下的人中最满意的。C++代码如下template class Record>void Sortable_lis原创 2007-05-21 00:22:00 · 1327 阅读 · 0 评论 -
如何改变Win32 Console 程序显示颜色?
正在编一个 C++ 的 Win32 Console 程序,请问怎样改变程序运行时的字符颜色和背景色?矩阵计算彩色HelloKitty样例运行一个例子试试先~ #include #include using namespace std; void SetColor(unsigned short ForeColor=0,unsigned short BackGroundColor=0) {转载 2007-05-21 02:25:00 · 1402 阅读 · 0 评论 -
筛法求素数+分解质因子+欧拉函数+求约数
bool prime[31700]; // 31700*31700 > 1000000000int primes[3500];int cnt=0; // 筛法求素数void sieve()...{ memset(prime, 1, sizeof(prime)); prime[0]=false; prime[1]=false; int m=31700;原创 2007-08-26 21:43:00 · 3401 阅读 · 2 评论 -
详细解说STL hash_map系列
原文:http://www.stlchina.org/twiki/bin/view.pl/Main/STLDetailHashMap 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山转载 2007-08-24 02:27:00 · 1732 阅读 · 0 评论 -
vc++2005 和 g++中使用hash_map
hash_map不在C++98/2003标准中,因此在VC++2005和g++中使用的方法略有区别。【1】VC++2005#include hash_map> // 注意头文件和namespaceusing namespace stdext; int main()...{ hash_mapstring, int> hmap; return 0;}【2】g++#i原创 2007-08-24 02:04:00 · 2692 阅读 · 0 评论 -
优先级队列priority_queue源代码
chapter 6.5 (《算法导论.第6章 优先级队列) ,, 函数名参照C++ STL中priority_queue数组实现.源代码:#includeiostream>using namespace std;typedef int queue_entry;#define maxque 20 // small number for testclass Prior原创 2007-05-28 11:19:00 · 2287 阅读 · 0 评论 -
C++ STL中用vector 改进内存的再分配
作者: winter 这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。传统的内存再分配技术非常繁琐,而且容易出错:在 C 语言中,一般都是每次在需要扩充缓存的时候调用 realloc()。在 C++ 中情况更糟,你甚至无法在函数中为 new 操作分配的数组重新申请内存。你不仅要自己做分配处理,而且还必须把转载 2007-05-23 06:29:00 · 2333 阅读 · 1 评论 -
deque源代码循环数组实现
dequeThe word deque (pronounced either "deck" or "DQ") is a shortend form of double-ended queueand denoted a list in which entries can be added or removed from either the first or the lastposition of原创 2007-05-27 22:31:00 · 1978 阅读 · 0 评论