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

プログラミング

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

スポンサーリンク
スポンサーリンク

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

C++のSTL(標準テンプレートライブラリ、Standard Template Library)でvectorにオブジェクトを入れておいてオブジェクトのメンバーによってソートしたいということがあります。

こういう時に使うのに便利なのがC++のファンクタ(functor)と呼ばれる機能です。

関数オブジェクトとも呼ばれます。

説明するよりもこの種の使い方はサンプルを見てもらうとよくわかると思いますのでサンプルコードと実行結果を載せてみました。

①静的関数(static function)を使う方法

②ファンクタ(functor)を使う方法

の2種類を載せてあります。

std::sortの使い方も合わせて見てみてください。

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

今回は静的関数、ファンクタ(functor)のどちらを使っても、vectorに含まれるオブジェクトをメンバによってソートすることが可能です。

ただし、ファンクタを使うようにした方がのちのち応用が利くようになるし、プログラムがよりエレガントに見えます。

そういう意味で、特にC++でこの種のコードを書くときはファンクタを使うようにしましょう。

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

ところで、こんなエラーメッセージが表示されることがあります。

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

#include <algorithm>が必要です。

std::sortは慣れてくるととても便利です。

プログラミングの無料レッスン体験

約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp

<Codecampの特徴>

1 現役エンジニアによる指導

2オンラインでのマンツーマン形式の講義

3大手企業にも導入されている実践的なカリキュラム

↓無料体験レッスン実施中です。

プログラミングのオンラインスクールCodeCamp