陳俊杉教授說,使用STL的最高境界,就是程式看不到for和while loop,完全用STL algorithm搞定。當資料裝進container後,接下來就是對container內的資料一個一個做加工,transform()允許我們寫自己的function加以處理。
在以下的範例中,我們希望將vector中所有的字串變成小寫,所以使用transform()對vector中每個string元素做處理,C/C++的字串並沒有提供轉寫小的功能(.NET的string有),但C有提供對每個字元轉小寫的功能,由於string也是個container,我們再次使用transform()處理每個字元,並且呼叫<cctype>的tolower()將每個字元改成小寫。
1

/**/
/*
2
(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4
Filename : StreamIteratorCinCout.cpp
5
Compiler : Visual C++ 8.0 / ISO C++
6
Description : Demo how to use transform() algorithm
7
Release : 12/10/2006
8
*/
9
#include
<
iostream
>
10
#include
<
cctype
>
11
#include
<
algorithm
>
12
#include
<
vector
>
13
#include
<
string
>
14
15
using
namespace
std;
16
17
string
&
toLower(
string
&
);
18
19
int
main()
{
20
vector<string> svec;
21
svec.push_back("Stanley B. Lippman");
22
svec.push_back("Scott Meyers");
23
svec.push_back("Nicolai M. Josuttis");
24
25
// Modify each string element
26
transform(svec.begin(), svec.end(), svec.begin(), toLower);
27
28
copy(svec.begin(),svec.end(), ostream_iterator<string>(cout,"\n"));
29
30
return 0;
31
}
32
33
string
&
toLower(
string
&
s)
{
34
// Modify each char element
35
transform(s.begin(), s.end(), s.begin(), tolower);
36
return s;
37
}


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19



20

21

22

23

24

25

26

27

28

29

30

31

32

33



34

35

36

37

執行結果
1
stanley b. lippman
2
scott meyers
3
nicolai m. josuttis

2

3
