C++三大库boost、loki、stlport

本文介绍了C++中的标准库和一些流行扩展库,如SGI STL、STLport和Boost。SGI STL以其高效和标准化著称,但平台兼容性有限。STLport致力于将SGI STL移植到多种编译环境,而Boost则提供了丰富的实用库,包括正则表达式、图形库、线程管理和更多。对于开发者来说,了解和掌握这些库能提升C++编程的效率和质量。
摘要由CSDN通过智能技术生成
转:


STL是一个标准,各商家根据这个标准开发了各自的STL版本。而在这形形色色的STL版本中
,SGI STL无疑是最引人瞩目的一个。这当然是因为这个STL产品系出名门,其设计和编写
者名单中,Alexander Stepanov和Matt Austern赫然在内,有两位大师坐镇,其代码水平
自然有了最高的保证。SGI STL不但在效率上一直名列前茅,而且完全依照ISO C++之规范
设计,使用者尽可放心。此外,SGI STL做到了thread-safe, 还体贴地为用户增设数种组
件,如hash, hash_map,hash_multimap, slist和rope容器等等。因此无论在学习或实用中
,SGI STL应是首选。

无奈,SGI STL本质上是为了配合SGI自作的UNIX变体IRIX所量身定做,其它平台上的C++编
译器想使用SGI STL,都需要一番周折。着名的GNU C++虽然也使用 SGI STL,但在发行前
已经过调试整合。普通的用户,特别是Windows平台上的BCB/VC用户要想使自己的C++编译
器与SGI STL共同工作,可不是一件容易的事情。好在英雄总能及时出现,俄国人Boris F
omitchev注意到这个问题之後,建立了一个free的项目,称为STLport,旨在将SGI STL的
基本代码移植到各种主流编译环境中,使各种编译器的用户都能够享受到SGI STL带来的先
进之处。STLport 发展过程中,曾受到Matt Austern的亲切指导,发展到今天,已经比较
成熟。最新的STLport 4.0,可以从
www.stlport.org免费下载,zip文件体积约1.2M, 可以
支持向各种主流C++编译环境的移植。BCB及VC当然算是主流的编译环境,自然得到STLpor
t的关照。但据笔者实践来看,配置过程中还有一些障碍需要跨越,本文即旨在详细指导读
者在Borland C++Builder 5.5及Visual C++ 6.0 环境中配置STLport。


首先请从www.stlport.org中下载STLport 4.0的ZIP文件,文件名stlport-4.0.zip. 然後
利用WinZip等工具展开。生成stlport-4.0目录,该目录中有且仅有一个子目录,名称亦为
stlport-4.0,不妨将整目录拷贝到你以为合适的位置,然後改一个合适的名字,例如配合
BCB的,可以叫STL4BC,等等。

下面分成BCB/VC两种情形来描述具体过程。


Borland C++Builder 5
Borland C++Builder5中所带之C++编译器是5.5版本,在当前较主流的Windows平台编译器
中,对於ISO C++ Standard的支持是最完善的。用它来配合SGI STL相当方便,也是笔者推
荐之选。没有此开发工具的读者,可以到
www.borland.com上免费下载Borland C++ 5.5编
译器的一个精装版,该精装版体积为8.54M,名称 freecommandlinetools1.exe,乃一自解
压安装文件。可在Windows中执行它,
安装到合适的目录中。展开後体积50M。

以下描述中,假定你使用的Windows装在C:/Windows目录。如果你有BCB5,我假设装在C:/
Program Files/Borland/CBuilder5;如果你没有BCB5,而是使用上述的精简版BCC,则假
设安装在C:/BCC55目录中,而STLport原包置于C:/STL4BC。

C:/STL4BC中应该有以下内容:
<目录> doc
<目录> lib
<目录> src
<目录> stlport
<目录> test
文件 ChangLog
文件 Install
文件 Readme
文件 Todo

同时确保C:/Program Files/Borland/CBuilder5/Bin或C:/BCC55/Bin在你的Path环境变量
中。

笔者推荐你在安装之前读一读Install文件,其中会讲到如何避免使用SGI提供的iostream
库。如果你不愿意使用SGI iostream,STLport会在原来编译器自带的iostream库外加一个
wrapper,使之能与SGI STL共同合作。不过SGI提供的iostream库标准化程度好,跟本家
的 STL代码配合起来速度也快些,所以笔者实在想不出什麽理由不使用它,在这里假定大
家跟笔者一样,乐于使用SGI iostream库。有不同看法者尽可以按照Install文件的说法调
整。

下面一步步来:

0. 本次配置任务均在DOS命令状态下完成,请先从“开始”-->“附件”菜单中选中MS-DO
S方式,打开一个DOS窗口。

1. 到C:/Program Files/Borland/CBuilder5/bin中,利用你顺手的文本编辑器修改两个文
件:

file1: bcc32.cfg,改成:

-I"C:/STL4BC/stlport";/
"C:/Program Files/Borland/CBuilder5/Include";/
"C:/Program Files/Borland/CBuilder5/Include/vcl"
-L"C:/STL4BC/LIB";/
"C:/Program Files/Borland/CBuilder5/Lib";/
"C:/Program Files/Borland/CBuilder5/Lib/obj";/
"C:/Program Files/Borland/CBuilder5/Lib/release"

上面为了方便阅读用"/"符号将很长的一行折行,实际文件应该只有两行。

file2: ilink32.cfg,改成:

-L"C:/STL4BC/LIB";/
"C:/Program Files/Borland/CBuilder5/Lib";/
"C:/Program Files/Borland/CBuilder5/Lib/obj";/
"C:/Program Files/Borland/CBuilder5/Lib/release"

在C:/BCC55/BIN目录中,不存在这两个文件,请你自己用文字编辑器手工做出这两个文件
来,内容与上面有所不同,如下

file1: bcc32.cfg,内容:

-I"C:/STL4BC/stlport";"C:/BCC55/Include";
-L"C:/STL4BC/LIB";"C:/BCC55/Lib";

file2: ilink32.cfg,内容:

-L"C:/STL4BC/LIB";"C:/BCC55/Lib";

2. 进入到C:/STL4BC/SRC目录中。

3. 执行命令copy bcb5.mak Makefile

4. 执行命令make clean all

这个命令会执行很长时间,尤其在老旧机器上,可能运行30分钟以上。屏幕不断地在显示

工作情况,有时你会看到好像计算机在反复地做同样几件事,请保持耐心,这实际上是在

以不同编译开关建立不同性质的目标库。

5. 经过一段漫长的编译之後, 终於结束了。现在你再执行命令 make install 这次需要
的时间不长。

6. 来到C:/STL4BC/LIB目录,执行
copy *.dll c:/windows/system;

7. OK,大功告成。下面一步应该是检验一下事不是真的用上了SGI STL。rope是SGI STL提
供的一个特有容器,专门用来对付超大规模字符串(string是细弦,而rope是粗绳子,可以
想见rope的能力有多强)。

下面这个程序有点暴殓天物,不过也可以做一个小试验了:

//issgistl.cpp
#include <iostream>
#include <rope>

using namespace std;

int main()
{
  // crope就是容纳char类型字符的rope容器
  crope bigstr1("It took me about one hour ");
  crope bigstr2("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值