(原創) 如何使用transform() algorithm? (C/C++) (STL)

时间:2022-09-01 18:33:02

陳俊杉教授說,使用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 (原創) 如何使用transform() algorithm? (C/C++) (STL)(原創) 如何使用transform() algorithm? (C/C++) (STL) /* 
 2(原創) 如何使用transform() algorithm? (C/C++) (STL)(C) OOMusou 2006 http://oomusou.cnblogs.com
 3(原創) 如何使用transform() algorithm? (C/C++) (STL)
 4(原創) 如何使用transform() algorithm? (C/C++) (STL)Filename    : StreamIteratorCinCout.cpp
 5(原創) 如何使用transform() algorithm? (C/C++) (STL)Compiler    : Visual C++ 8.0 / ISO C++
 6(原創) 如何使用transform() algorithm? (C/C++) (STL)Description : Demo how to use transform() algorithm
 7(原創) 如何使用transform() algorithm? (C/C++) (STL)Release     : 12/10/2006
 8(原創) 如何使用transform() algorithm? (C/C++) (STL)*/

 9 (原創) 如何使用transform() algorithm? (C/C++) (STL)#include  < iostream >
10 (原創) 如何使用transform() algorithm? (C/C++) (STL)#include  < cctype >
11 (原創) 如何使用transform() algorithm? (C/C++) (STL)#include  < algorithm >
12 (原創) 如何使用transform() algorithm? (C/C++) (STL)#include  < vector >
13 (原創) 如何使用transform() algorithm? (C/C++) (STL)#include  < string >
14 (原創) 如何使用transform() algorithm? (C/C++) (STL)
15 (原創) 如何使用transform() algorithm? (C/C++) (STL) using   namespace  std;
16 (原創) 如何使用transform() algorithm? (C/C++) (STL)
17 (原創) 如何使用transform() algorithm? (C/C++) (STL) string &  toLower( string & );
18 (原創) 如何使用transform() algorithm? (C/C++) (STL)
19 (原創) 如何使用transform() algorithm? (C/C++) (STL)(原創) 如何使用transform() algorithm? (C/C++) (STL) int  main()  {
20(原創) 如何使用transform() algorithm? (C/C++) (STL)  vector<string> svec;
21(原創) 如何使用transform() algorithm? (C/C++) (STL)  svec.push_back("Stanley B. Lippman");
22(原創) 如何使用transform() algorithm? (C/C++) (STL)  svec.push_back("Scott Meyers");
23(原創) 如何使用transform() algorithm? (C/C++) (STL)  svec.push_back("Nicolai M. Josuttis");
24(原創) 如何使用transform() algorithm? (C/C++) (STL)
25(原創) 如何使用transform() algorithm? (C/C++) (STL)  // Modify each string element
26(原創) 如何使用transform() algorithm? (C/C++) (STL)  transform(svec.begin(), svec.end(), svec.begin(), toLower);
27(原創) 如何使用transform() algorithm? (C/C++) (STL)  
28(原創) 如何使用transform() algorithm? (C/C++) (STL)  copy(svec.begin(),svec.end(), ostream_iterator<string>(cout,"\n"));
29(原創) 如何使用transform() algorithm? (C/C++) (STL)
30(原創) 如何使用transform() algorithm? (C/C++) (STL)  return 0;
31(原創) 如何使用transform() algorithm? (C/C++) (STL)}

32 (原創) 如何使用transform() algorithm? (C/C++) (STL)
33 (原創) 如何使用transform() algorithm? (C/C++) (STL)(原創) 如何使用transform() algorithm? (C/C++) (STL) string &  toLower( string &  s)  {
34(原創) 如何使用transform() algorithm? (C/C++) (STL)  // Modify each char element
35(原創) 如何使用transform() algorithm? (C/C++) (STL)  transform(s.begin(), s.end(), s.begin(), tolower);
36(原創) 如何使用transform() algorithm? (C/C++) (STL)  return s;
37(原創) 如何使用transform() algorithm? (C/C++) (STL)}

執行結果
1 (原創) 如何使用transform() algorithm? (C/C++) (STL)stanley b. lippman
2 (原創) 如何使用transform() algorithm? (C/C++) (STL)scott meyers
3 (原創) 如何使用transform() algorithm? (C/C++) (STL)nicolai m. josuttis