stl实践指南 practical guide to stl
译者注 【程序编程相关:软件测试的基本概念和方法】
作者:jeff bogan 翻译:周翔 【推荐阅读:论“快捷组”应该缓行】stl简介 【扩展信息:Delphi控制Excel2000】
这是一篇指导您如何在microsoft visual studio下学习stl并进行实践的文章.这篇文章从stl的基础知识讲起,循序渐进,逐步深入,涉及到了stl编写代码的方法.stl代码的编译与调试.命名空间(namespace).stl中的ansi / iso字符串.各种不同类型的容器(container).模板(template).游标(iterator).算法(algorithms).分配器(allocator).容器的嵌套等方面的问题,作者在这篇文章中对读者提出了一些建议,并指出了使用stl时应该注意的问题.这篇文章覆盖面广,视角全面.不仅仅适合初学者学习stl,更是广大读者使用stl编程的实践指南.stl (标准模版库,standard template library)是当今每个从事c++编程的人需要掌握的一项不错的技术.我觉得每一个初学stl的人应该花费一段时间来熟悉它,比如,学习stl时会有急剧升降的学习曲线,并且有一些命名是不太容易凭直觉就能够记住的(也许是好记的名字已经被用光了),然而如果一旦你掌握了stl,你就不会觉得头痛了.与mfc相比,stl更加复杂与强大.
stl有以下的一些优点: 可以方便容易地实现搜索数据或对数据排序等一系列的算法; 调试程序时更加安全与方便; 即使是人们用stl在unix平台下写的代码你也可以很容易地理解(因为stl是跨平台的). 背景知识写这一部分是让一些初学计算机的读者在富有挑战性的计算机科学领域有一个良好的开端,而不必费力地了解那无穷无尽的行话术语与沉闷的规则,在这里仅仅把那些行话与规则当作stler们用于自娱的创造品吧.
使用代码
本文使用的代码在stl实践中主要具有指导意义.一些基础概念的定义
模板(template)——类(以及结构等各种数据类型与函数)的宏(macro).有时叫做甜饼切割机(cookie cutter),正规的名称应叫做范型(generic)——一个类的模板叫做范型类(generic class),而一个函数的模板也自然而然地被叫做范型函数(generic function).
stl——标准模板库,一些聪明人写的一些模板,现在已成为每个人所使用的标准c++语言中的一部分.容器(container)——可容纳一些数据的模板类.stl中有vector,set,map,multimap与deque等容器.向量(vector)——基本数组模板,这是一个容器.游标(iterator)——这是一个奇特的东西,它是一个指针,用来指向stl容器中的元素,也可以指向其它的元素.hello world程序
我愿意在我的黄金时间在这里写下我的程序:一个hello world程序.这个程序将一个字符串传送到一个字符向量中,然后每次显示向量中的一个字符.向量就像是盛放变长数组的花园,大约所有stl容器中有一半是基于向量的,如果你掌握了这个程序,你便差不多掌握了整个stl的一半了.
//程序:vector演示一//目的:理解stl中的向量// #include "stdafx.h" -如果你使用预编译的头文件就包含这个头文件
#include // stl向量的头文件.这里没有".h".#include // 包含cout对象的头文件.using namespace std; //保证在程序中可以使用std命名空间中的成员.char* szhw = "hello world";
//这是一个字符数组,以”\0”结束.int main(int argc, char* argv[])
{ vector vec; //声明一个字符向量vector (stl中的数组)//为字符数组定义一个游标iterator.
vector ::iterator vi;... 下一页