ファンクタ(functor、関数オブジェクト)を使ってvectorに入れたオブジェクトをメンバーでソートする

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

ファンクタ(functor、関数オブジェクト)の使い方

C++のSTL(標準テンプレートライブラリ、Standard Template Library)でvectorにオブジェクトを入れておいてオブジェクトのメンバーによってソートしたいということがあります。
こういう時に使うのに便利なのがC++のファンクタ(functor)と呼ばれる機能です。
関数オブジェクトとも呼ばれます。
説明するよりもこの種の使い方はサンプルを見てもらうとよくわかると思いますのでサンプルコードと実行結果を載せてみました。
①静的関数(static function)を使う方法
②ファンクタ(functor)を使う方法
の2種類を載せてあります。
std::sortの使い方も合わせて見てみてください。

実行結果は以下の通りです。

今回は静的関数、ファンクタ(functor)のどちらを使っても、vectorに含まれるオブジェクトをメンバによってソートすることが可能です。
ただし、ファンクタを使うようにした方がのちのち応用が利くようになるし、プログラムがよりエレガントに見えます。
そういう意味で、特にC++でこの種のコードを書くときはファンクタを使うようにしましょう。

スポンサードリンク

Error :namespace “std” にメンバー”sort”がありません

ところで、こんなエラーメッセージが表示されることがあります。
#include <algorithm>が必要です。
std::sortは慣れてくるととても便利です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です