align=center></P>
><B>6 </B><B>C++</B><B>标准程序库</B>(The C++ Standard Library)<B></B></P>
>标准程序库提供:</P>; d3 V% Z; f. Z% G' L
>[1] 基本的运行期之语言支持(run-time language support)(比如运行期内存分配、运行期型别识别等);</P>& Q _1 R+ o2 s$ O8 N( T9 E+ }( J5 l
>[2] C语言标准程序库(为了使其与类型系统的冲突降到最低,进行了一些微小的修改);</P>4 @9 j: X9 j+ g
>[3] strings和输入输出流(附带对国际字符集和本地化的支持);</P>
>[4] 一个container framework(比如vector,list和map等)以及使用这些container的算法(比如通用的遍历、排序以及合并算法);</P>! x" ]9 Y1 P/ j! V+ B$ \
>[5] 对数值计算的支持(复数以及向量的算术运算;类BLAS的、通用的slices;有利于优化处理的语意设计)。</P>! ?4 K. t9 Q2 K# O
>将一个类包含在程序库里的主要原则有:这个类应该可能被几乎所有的C++程序员(不管是新手还是专家)使用;这个类应该以一种通用的形式被提供,但与实现相同功用的、更简单的形式相比,又不会带来明显的负荷;其基本用法很容易学会。总的来说,C++标准库提供了最常用的基本数据结构以及使用这些数据结构的基本算法。</P>
>由container、iterator和算法形成的framework通常被称为STL。STL基本上是Alexander Stepanov的研究成果[Stepanov,1994]。</P>/ t, ?- D! d. o2 b3 F
> </P>
><B>6</B><B>.</B><B>1 string</B><B>和</B><B>I/O</B><B>(输入</B><B>/</B><B>输出)</B><B></B></P>7 P* ]' Y4 U* @4 v2 ]6 s
>在C++中,string和I/O操作并不是直接由某种特殊的语言结构提供的。标准程序库提供了string和一些I/O型别。例如:</P>
>#include <string> // 使标准string设施成为可用的</P>" r" c# z! o! T+ J: N( ?' i7 k
>#include <iostream> // 使标准I/O设施成为可用的</P>0 z+ H6 M N* y6 Z
>int main()</P>+ I8 d4 `5 }& F0 y* O& `
>{</P> Z3 h: } M0 _: ?
>using namespace std;</P>
>string name;</P>
>cout << “Please enter your name: “; // 提示用户</P>% @! W" i8 R! _8 o3 v& f; B% r
>cin >> name; // 读取一个名称</P>" w1 R! e- G2 F6 I7 q( \
>cout << “Hello, “ << name << ‘\n’; // 输出名称,后跟一个“新行符”</P>* P' J" H9 [$ f( {4 V2 d
>return 0;</P>' @& k+ a$ X+ c! @7 p
>}</P>% B5 W8 U* | B2 N
>这个例子使用了标准输入流cin、标准输出流cout,以及它们所需要的>>运算符(意即“取自某处”)和<<运算符(意即“放到某处”)。</P>0 Z" n' Z$ Y' E x. ^! j7 J# `
>I/O流支持多种格式化和缓冲设施;string支持诸如联结、插入、从串中取字符之类的常用操作。流和string可以用于任何字符集。</P>
>标准程序库的设施可以(也经常就是)只利用面向用户的设施来实现。因此即使标准设施有时还不够用,用户也可以自己提供同样优雅的替代方案。</P>8 O5 M4 o H- H0 p: O8 H
> </P>: H8 B# x; ~8 b7 l
><B>6</B><B>.</B><B>2 Container</B></P>
>标准程序库提供了一些最有用也最通用的container型别,从而使程序员能够从中选择最能满足应用需要的container:</P>. g. |/ A, ]+ }3 R4 @| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |