锁定老帖子 主题:使用C++标准库来提高编程效率
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-09
使用C++标准库来提高编程效率
在C语言中几乎所有的数据结构都需要自己去实现甚至最常用的链表,队列等。。。,在中国很多程序员都是在Windows下成长起来的,很多程序员都习惯于使用非语言标准的集合类,入MFC中的CArray, CList, CStringArray … 如下图
在现代的C++编程理念中很强调使用类库, B.J多次强调不应增加太多的语言特性来解决问题(C++语言特性已经够多了够复杂了,要不然现在很多人都又回到C的怀抱啦),而是需要提供更好的类库来解决。
我们应该养成使用C++标准库的习惯,这也是人类从工程学科积累下来的经验,这些经过了千锤百炼的类库无论是性能和跨平台都做了最好的权衡。为每一个应用造一个轮子不仅效率地下,而且在短的时间内你造的轮子不一定好用(bug…)我们不要做“不要重复发明轮子”的“英雄”。纵观其他行业,如计算机硬件,武器工业等。。。都体现了这一思想。如:很多国家,都通过某一优良的坦克或汽车底盘。派生出很多类别的作战车辆。有侦察型。防空型。维修型。这也体现了重用的思想。战舰也是这样的,战舰的船体(包括动力系统,操控系统…)。以这一种成熟的船体来模块化的组合在上层的不同的武器系统便可以承担不同的作战任务。有防空型,反潜行。反舰型。。。我们也要有这种思想。也不多扯淡了下面演示使用C++ 标准库给我们带来的好处,这里只举一个使用STL和传统方式的对比来体现使用 STL 方便之处。更多的STL使用方式可以参考《C++标准库手册》。 简单的例子:
运行结果:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-11-10
C++标准库整个就是贫血库...怎么用???
|
|
返回顶楼 | |
发表时间:2010-11-10
ray_linn 写道 C++标准库整个就是贫血库...怎么用???
所以这才是boost,还有0x的来由.. 要是std 啥都有,怕就没有其他一堆奇怪的库的事了... |
|
返回顶楼 | |
发表时间:2010-11-10
最后修改:2010-11-10
mathgl 写道 ray_linn 写道 C++标准库整个就是贫血库...怎么用???
所以这才是boost,还有0x的来由.. 要是std 啥都有,怕就没有其他一堆奇怪的库的事了... 一个卖有Thread,也卖有regex的库,几乎马上就让人瀑布汗。。。选择boost,应该可以加分哈。 MongoDB就是建设在boost之上的 |
|
返回顶楼 | |
发表时间:2010-11-10
“这种什么都没有”也给了我们更多的选择。C++的库比比皆是。你可以去发现。C++就是这么的自由。无论是GUI, 通讯,XML, Thread你的选择方案很多。
QT, wxWitgets, WTL, GTK+, MFC, ACE, SOCKET++....太多了。 boost::thread, ZThread |
|
返回顶楼 | |
发表时间:2010-11-10
ray_linn 写道 mathgl 写道 ray_linn 写道 C++标准库整个就是贫血库...怎么用???
所以这才是boost,还有0x的来由.. 要是std 啥都有,怕就没有其他一堆奇怪的库的事了... 一个卖有Thread,也卖有regex的库,几乎马上就让人瀑布汗。。。选择boost,应该可以加分哈。 MongoDB就是建设在boost之上的 Kyoto cabinet也是。。只要支持 tr1的编译器都可以编译。这样跨平台变成了可能。我用vs2010可以编译 和运行 kyoto cabinet。原来的tokyo据我所知是不能在win下用的。。 从这一点来看。一个完备的库对于用户来说是很有吸引力的。 没错,c++是自由,可以随意选择需要的库,,但是,有些时候自由反而是个麻烦事,特别是在维护非自己的代码时, 见过有同时使用apr 和 zthread的,这种自由不一定是好事。 实际上,我更倾向于 python这种 battery included的库,这样在不用借助太多的关联下可以完成任务。这一点来说boost还有些缺乏... |
|
返回顶楼 | |
发表时间:2010-11-10
C++的标准库几乎就相当于java.util和java.io及java.lang的一部分。
对于高级特性很少,而且标准化极慢。 所以用C++就要和N多第三方的库打交道,或者干脆自己写。 |
|
返回顶楼 | |
发表时间:2010-11-10
最后修改:2010-11-10
thinkx 写道 C++的标准库几乎就相当于java.util和java.io及java.lang的一部分。
对于高级特性很少,而且标准化极慢。 所以用C++就要和N多第三方的库打交道,或者干脆自己写。 C++的标准库只能用“操蛋”来评价,而那么多繁杂的库我只喜欢两个,boost和QT,一个补强筋骨,一个强化容颜。 其他就等专业使用再说吧(比如ACE之类的和Windows下各种SDK一样,用的时候看吧) |
|
返回顶楼 | |
发表时间:2010-11-10
最后修改:2010-11-10
ray_linn 写道 thinkx 写道 C++的标准库几乎就相当于java.util和java.io及java.lang的一部分。
对于高级特性很少,而且标准化极慢。 所以用C++就要和N多第三方的库打交道,或者干脆自己写。 C++的标准库只能用“操蛋”来评价,而那么多繁杂的库我只喜欢两个,boost和QT,一个补强筋骨,一个强化容颜。 其他就等专业使用再说吧(比如ACE之类的和Windows下各种SDK一样,用的时候看吧) boost太大了,各种库质量也大不相同,有些很棒,有些很蛋疼。 C++各种编译器之间也无法做到二进制兼容,导致很多类似plugin的实现只能使用C兼容接口,话说现在越来越觉得,C比C++更纯粹点。 |
|
返回顶楼 | |
发表时间:2010-11-10
C++应该吸纳 Qt 作为标准。
一个现代的系统级语言,怎么可以连个界面库都没有。 |
|
返回顶楼 | |