標準 C++ ライブラリで提供される多数のアルゴリズムは、引数として関数を必要とします。単純な例を挙げると、関数を呼び出すアルゴリズム for_each() は引数としてコンテナ内に保持されている各値に渡されます。たとえば、次のコードでは、整数値のリストの各要素を記述する出力を作成するために、printElement() 関数を適用します。
void printElement (int value) { cout << "The list contains " << value << endl; } main () { list<int> aList; ... for_each (aList.begin(), aList.end(), printElement); }
2 項関数 では 2 つの引数を使用し、2 つのシーケンスから値が適用されることもあります。たとえば、文字列のリストと整数のリストがあるとします。前者のリストの各要素に、後者のリストの対応する値で指定された回数だけ文字列を複製する場合は、標準 C++ ライブラリから transform() 関数を使用することで簡単に実行することができます。まず、2 項関数を要求される特性とともに定義します。
string stringRepeat (const string & base, int number) // 指定された回数だけ基底を複製する { string result; // 最初は結果が空になる while (number--) result += base; return result; }
次に、transform() を呼び出し、要求された結果を引き出します。
list<string> words; list<int> counts; ... transform (words.begin(), words.end(), counts.begin(), words.begin(), stringRepeat);
ワード one,two,three を値 3, 2, 3 に変換すると、oneoneone,twotwo,threethreethree という結果が生じます。