boost简介

boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。  STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。 
boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。 有一些库是跨类别包含的,就是既属于这个类别又属于那个类别。 
在文本处理部分,conversion/lexcial_cast类用于”用C++”的方法实现数字类型和字符串之间的转换。 主要是替代C标准库中的 atoi、 itoa之类的函数。当然其中一个最大的好处就是支持泛型了。 
format库提供了对流的”printf-like”功能。printf里使用%d、%s等等的参数做替换的方法在很多情况下还是非常方便的,STL的iostream则缺乏这样的功能。format为stream增加了这个功能,并且功能比原始的printf更强。 
regex,这个不多说了,正则表达式库。如果需要做字符串分析的人就会理解正则表达式有多么有用了。 
spirit,这个是做LL分析的框架,可以根据EBNF规则对文件进行分析。(不要告诉我不知道什么是EBNF)。做编译器的可能会用到。一般人不太用的到。 
tokenizer库。我以前经常在CSDN上看到有人问怎么把一个字符串按逗号分割成字符串数组。也许有些人很羡慕VB的split函数。现在,boost的tokenizer也有相同的功能了,如果我没记错的话,这个tokenizer还支持正则表达式,是不是很爽? 
array: 提供了常量大小的数组的一个包装,喜欢用数组但是苦恼数组定位、确定数组大小等功能的人这下开心了。 
dynamic_bitset,动态分配大小的bitset,我们知道STL里有个bitset,为位运算提供了不少方便。可惜它的大小需要在编译期指定。现在好了,运行期动态分配大小的bitset来了。 
graph。提供了图的容器和相关算法。我还没有在程序中用到过图,需要用的人可以看看。 
multi_array提供了对多维数组的封装,应该还是比较有用的。 
并发编程里只有一个库,thread,提供了一个可移植的线程库,不过在Windows平台上我感觉用处不大。因为它是基于Posix线程的,在Windows里对Posix的支持不是很好。 
接下来的 数学和数值 类里,包含了很多数值处理方面的类库,数学类我也不太熟,不过这里有几个类还是很有用的,比如rational分数类,random随机数类,等等。 
static_assert,提供了编译器的assert功能。 
test库,一个单元测试框架,非常不错。 
concept_check提供了泛型编程时,对泛型量的一点检查,不是很完善,不过比没有好。 
数据类型类any,一个安全的可以包含不同对象的类。把它作为容器的元素类型,那么这个容器就可以包含不同类型的元素。比用void *要安全。 
compressed_pair,跟STL里的pair差不多。不过对空元素做了优化。 
tuple,呵呵,也许是某些人梦寐以求的东西。可以让函数返回多个值。 
跨语言支持:python,呵呵,好东东啊,可以将C++的类和函数映射给python使用。以下为几个CSDN上的关于boost.python的中文资料: 
   pool:内存池,呵呵,不用害怕频繁分配释放内存导致内存碎片,也不用自己辛辛苦苦自己实现了。 
   smart_ptr:智能指针,这下不用担心内存泄漏的问题了吧。不过,C++里的智能指针都还不是十全十美的,用的时候小心点了,不要做太技巧性的操作了。 
   date_time,这个是平台、类库无关的实现,如果程序需要跨平台,可以考虑用这个。 
   timer,提供了一个计时器,虽然不是Windows里那种基于消息的计时器,不过据说可以用来测量语句执行时间。 
   uitlity里提供了一个noncopyable类,可以实现”无法复制”的类。很多情况下,我们需要避免一个类被复制,比如代表文件句柄的类,文件句柄如果被两个实例共享,操作上会有很多问题,而且语义上也说不过去。一般的避免实例复制的方法是把拷贝构造和operator=私有化,现在只要继承一下这个类就可以了,清晰了很多。 
    value_initialized:数值初始化,可以保证声明的对象都被明确的初始化,不过这个真的实用吗?似乎写这个比直接写初始化还累。呵呵,仁者见仁了。 
   这里面除了regex、python和test需要编译出库才能用,其他的大部分都可以直接源代码应用,比较方便。其实这些库使用都不难。最主要的原因是有些库的使用需要有相关的背景知识,比如元编程、STL、泛型编程等等。 

预备队分组名单及时间安排

发信人: xbull (我很笨,我是一只小小猪), 信区: dianprep
标  题: 重要通知!!!
发信站: 喻信星空 (2004年11月27日10:18:40 星期六), 站内信件

                   预备队分组名单:

A 组:略去
B 组:略去
C 组:略去
D 组:略去

有想要换组的,可以在本周例会上提出。

                   预备队本学期时间安排:

13周:    确定需求,即每个人必须确定好自己的程序要实现哪些功能, 而且我希望大家
         能够”发明”一些新功能出来. 13周交周报的时候必须提交这些功能的详细描述
         考虑到13周还只剩2天,这个提交工作可以推迟到14周周三前。

14周:    设计自己的程序, 必须画出相应的程序流程图, 由于这个程序本身比较简单,
          所以没有必要把设计工作分太细, 直接做详细设计就可以了; 除此之外
         希望大家在14周对这个程序要用到的一些 C 语言知识进行预习或者复习。
         14周周报必须提交各人设计的程序流程图。

15~17周:三个礼拜完成编码工作. 注意编码风格.

18周:   代码REVIEW, 首先各个小组内部进行代码的互相REVIEW,然后每个小组选派
         一名同学的代码作代表,到时候我将组织一线队员对大家的代码进行
         REVIEW。每个人的代码都必须上交。

19周:   写总结. 字数不限,体裁不限,主要谈本学期的收获和建议,当然还有下个学
         期打算。

20周~:  放假!!

嗯,已经太习惯学校生活了

       本来上午说好跟suoluo、cmzb一起去汉口敲诈asile,但是后来又有些退却了,一是因为人太少,我一个男生,不太好玩,再加上国庆交通状况比较差,去了要花平时多一倍的时间,不过这些恐怕不是最重要的原因,我觉得自己已经对校园有些依赖了,如果不是必要,我一个学期都难得离开一次学校,对外面的空气,我很难适应。
       看来还要逼自己走出去才行,天天呆在学校,以后怎么面对社会呢,呵呵……