您的位置:首页 > 其它

codeproject文章翻译(1)

2008-08-19 12:36 344 查看
原文连接:

http://www.codeproject.com/vcpp/stl/stlintroduction.asp#xx656553xx

STL(Standard Template Library标准模板库)指南
前言
STL提供了一些基于容器类的模板和方法。容器类使开发者的处理更快更高效。还有方法,一些我们已知道的算法,提供基于容器的模板操作函数。
STL的优势包括
-安全的模式采集
-灵活的运用
模板
如果你对模板已经比较熟悉可以直接到第二部分。另外这一部分只是简单介绍模板。一个可以被检查认定为是宏的模板。下面的例子是我们定义的一个模板:
template < class T >
class Value
{
T _value;
public:
Value ( T value ) { _value = value; }

T getValue ();

void setValue ( T value );
};

template < class T >
T Value<T>::getValue () { return _value; }

template < class T >
void Value<T>::setValue ( T value ) { _value = value; }

个例子定义了存储了一个变量T类型的value和_value的类Value。关键字template后面,在建括号内是参数类型。告诉模板在模板中将要
用到的是什么类型。模板参数列表的最好例子是种类构造器的参数列表 (A good analogy for the template
parameter list is the parameter list for a class
constructor.)。就像一个构造者,模板可以构造出多个。
模板的方法定义在外边也要求使用template关键字,就像上边的一样。用Value类定义一个float数组,我们可以这样做:
Value<float> values[10]; // array of values of type float
这个定义了一个values数组,尖括号告诉我们Value会存储float类型的数据。
如果你想要定义一个表通过使用这个模板类来是实现的话,我们可以这样做:
Template < class T >
class ValueList
{
Value<T> * _nodes.
public:
ValueList ( int noElements )
{
_nodes = new Node<T>[noElements];
}

virtual ~ValueList ()
{
delete [] _nodes;
}
};
这里定义了一个入参大小的基于模板的values的链表。
STL容器种类
没个STL容器都有它自己的模板参数,这个在后面会讨论到。你要选择哪种容器决定自己的需求。根据过去的经验,vector和map这两个是用的最多的。vector适用于简单或者复杂的容器类型,map被用于关联类型上。deque用在基于队列处理方面很好。
就像系统的消息处理。
vector
元素的类型为T。
list
元素类型为T。这个用来存储连接的元素,每个元素的类型都是T。
定义包含下列的头文件:
#include<list>
deque
一个可以放可变长度的元素类型T。队列提供了一种方式允许从任一端插入和删除一个元素的copy,而且支持在队列中任意位
置插入和删除元素,队列遵循各自的操作,
定义包含下列的头文件:
#include<deque>

map
A collection for a varying length sequence of elements of type pair<const Key, T>. The first element of each
pair is the sort key and the second is its associated value. The sequence is represented in a way that permits
lookup, insertion, and removal of an arbitrary element. The key can be a simple as a number or string or as
complex a key class. The key class must support normal comparison operations so that the collection can be
sorted or searched.
集合用于存储一系列双值元素,其长度是可变化的。元素的第一位值是排序关键字,第二位置是其相关值。以某种方式可以
对该序列替进行查找,插入,或删除任意元素的操作。元素的关键字可以是简单的数字,字符串,也可以是一复杂的对象。
如果是复杂的对象作为关键字,则该对象必须支持普通的比较操作
每一个的第一个元素是排序的关键字,第二个是相关的值.
定义包含下列的头文件:
#include <map>

set
A collection that controls a varying length sequence of elements of type
const Key. Each element serves as both a sort key and a value.
The sequence is represented in a way that permits lookup, insertion, and removal
of an arbitrary element.
定义包含下列的头文件:
#include <set>

STL 字符串
STL strings 支持ascii 和 unicode两种字符串。
string
string是ascii字符串容器支持插入和删除操作。
定义包含的头文件:
#include<string>
wstring
wstring是一个支持插入和删除操作的宽字符容器.在MFC中的字符串类是一个提供Format和一些其他对字符串操作的类
CString,CString提供一写高级的方法,比如说Format,TrimLeft,TrimRight 和 LoadString. 可以很容易的提供包含这
些方法的字符串基类.
定义包含的头文件:
#include<xstring>
STL Streams
流提供给开发者一个类,此类输出流元素的变量类型到容器。
stringstream
字符流支持插入元素操作,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: