自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 泛型:实施(Enforcements)

泛型编程>:实施(Enforcements)Andrei Alexandrescu and Petru Marginean本文代码下载    你知道,当一个概念从一个专有名词变成一个普通名词时,说明它真正的深入人心了。比如Kleenex(面巾纸品牌,也指面巾纸),Xerox(施乐,复印机品牌,也指复印机)Q-Tips(化妆品品牌,也指化妆包),对吗?所以说,当我听说你可以在Visu

2004-08-18 13:05:00 1953 3

原创 泛型:断言

泛型编程>:断言 Andrei Alexandrescu        本部分“泛型编程>”讨论断言(assertions),一个你兵器库内非常强大的工具。以assert为基础,我们建立一个更强大的工具,帮助你建立更好的程序。我们很快就能看到,断言不仅是简单的工具/宏/函数。这是一种生活方式,一道深深的鸿沟把程序员们分成两类:了解,和不了解断言的力量。   Assert(cool);      

2004-08-03 13:32:00 2016

原创 泛型:转移构造函数

泛型:转移构造函数 Andrei Alexandrescu     我想你们知道得很清楚,创建,拷贝,并摧毁临时对象是你的C++编译器爱做的事,临时对象在内部被创建,不幸的是这极大影响到了C++程序的执行效率。实际上,临时对象是C++程序中最大的影响效率因素。     这样的代码看上去不错:   vector ReadFile(); vector vec = ReadFile();   或:  

2004-07-09 14:11:00 2808

原创 泛型<编程>:类型化缓存(II)

泛型:类型化缓存(II)Andrei Alexandrescu 我们以电视剧中常见的方式来回顾一下前文的重点。我们勾画了一个非常类似于std::vector的模板类buffer,除了buffer没有容积概念,并且增加了一些基本函数,比如grow_noinit和shrink_nodestroy。此外,前文提到把类型特性(type traits)作为一个提供优化的技术手段。最后,有个恶棍威胁说将要

2004-06-09 17:13:00 1588

原创 泛型<编程>:类型化缓存(III)

泛型:类型化缓存(III)Andrei Alexandrescu 这是类型化缓存——轻量级和灵活的连续任意类型对象数组——的最后部分。它定位于基本内建数组和复杂的std::vector之间,当效率很重要时。类型化缓存是非常有用的结构,更重要的是,它可作为方便的基础部件来建立更复杂的结构——比如string,vector,queue及其他。 前一部分[1]集中讨论基本的有关buffer操作的高效

2004-06-09 17:12:00 1879

原创 泛型<编程>:类型化缓存(I)

泛型:类型化缓存(I)Andrei Alexandrescu 想象本篇你正要读的“泛型”部分的开头是:“本文关于怎样用C++处理内存缓冲”。 当你轻率地关掉浏览器时,如果竖起耳朵,你还会听到成千上万的鼠标在做和你一样的事情。因为谁会对处理内存缓冲这样的小事感兴趣呢? 但本文确实关于怎样在C++中处理内存缓冲,但这里有两个特殊之处。首先,缓冲是泛型的,这意味着缓冲里面能放置类型化数据(相反于原始

2004-05-26 13:57:00 2518

原创 泛型<编程>:基于策略的basic_string实现

泛型:基于策略的basic_string实现Andrei Alexandrescu 这个月的返型部分有两样新的东西。一样是本篇主题——我们会讨论实现标准库部件basic_string(更多作为string为人所知,为了方便,string是一个basic_string的typedef),一个C++库的重要部件。但真正有趣的是本篇供下载的代码为了在Visual C++ 6.0下工作做了特别处理,V

2004-05-19 13:28:00 1923

原创 泛型<编程>:volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件(race conditions)

泛型:volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件(race conditions)Andrei Alexandrescu 我不想破坏你的情绪,但这篇专栏针对多线程编程中最可怕的问题。如果说——正如前面一篇泛型所说的——写出意外安全(exception-safe)的程序很难,但写意外安全的程序和多线程编程比起来就是小孩子的玩意。 用到多线程的程

2004-05-12 17:06:00 1594

原创 泛型<编程>:可识别联合(Discriminated Unions)(3)

泛型:可识别联合(Discriminated Unions)(3)Andrei Alexandrescu 在进入今天的主题之前,这里有些你可能感兴趣的新闻。 不久前,Jonathan, H,Lundquist和Mat Marcus各自把部分Loki库改写使之兼容于Visual C++ 6。他们的实现是某种理念上的实验,还没有达到完善的地步。大体上由于各种编译器相关的问题,在现在,Loki的作用

2004-05-01 21:12:00 1609 1

原创 泛型<编程>:可识别联合(Discriminated Unions)(2)

泛型:可识别联合(Discriminated Unions)(2)Andrei Alexandrescu 你知道“语法作料”(译注:synbtactic suger,语言里用来提高可读性的部分,但对语言本身没有作用)吗?它导致了乱用分号的恶习?[1]好吧,玩笑开够了,今天我们有很多事情要做,让我们开始吧。 这个部分接着完善使用C++的可识别联合的实现。今天我们会结束关于对齐的讨论,并写一些Va

2004-04-29 21:09:00 1501

原创 泛型<编程>:可识别联合(Discriminated Unions)(1)

泛型:可识别联合(Discriminated Unions)(1)Andrei Alexandrescu 相信我:不管粗看上去怎么样,如果你想要的是关于编程的文章,你算来对地方了。这里讨论的不是怎样去识别一个联合,这个泛型编程的部分讨论的是可识别联合数据的类型。 可识别联合从概念上说有许多同义词:拆解联合(disjoint union),可变类型(variant type),或者代数类型(al

2004-04-28 22:53:00 1763

原创 泛型编程:类型串(typelists)及应用

泛型编程:类型串(typelists)及应用Andrei Alexandrescu很难讲这是怎么开始的。我个人只能说:开始我在Usenet新闻组comp.lang.c++.moderated(顺便推荐一下)看到一些帖子,里面有怪异的模板递归。后来,当在自动虚工厂(Abstract Factory)实现中遇到巨大困难时,某种结构出现在我脑海中。 其他人也已经独立做过类似工作,因为各种不同的类型串

2004-04-28 00:03:00 1849 1

原创 一个可识别联合(Discriminated Unions)的C++实现

一个可识别联合(Discriminated Unions)的C++实现       Andrei Alexandrescu概要:可识别联合(也是常说的可变类型或标记联合)是一种存放对象和对象所属类型标记的数据结构,对象可来自于任意的类型集合。可识别联合在某些应用中象解释器,数据库程序和数据通讯中是非常有用的。一些用c++来实现的可识别联合已经出版[1],[2]。这篇文章介绍了基于c++泛型的可识别

2004-04-26 22:07:00 1820

空空如也

空空如也

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

TA关注的人

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