C++STL の std::set に関数オブジェクトを渡す2021年04月21日 11時57分59秒

std::set に演算子実装のクラスを渡し、任意の比較を行った。前回はそのクラスの大きさが気になったのが実験の動機。今回は関数オブジェクトを渡す。

関数オブジェクトをコンテナに渡す時の宣言をいつも忘れる。テンプレート引数の所に、比較式を書けば良いだけだ。

#include <set>
#include <iostream>

int main()
{
    bool ( *f )( int, int ) = []( int l, int r ){ return l > r; };
    std::set< int, bool (*)( int, int ) > desc( f );

    std::cout << "desc sizeof " << sizeof( desc.value_comp() ) <&
lt; std::endl;
    std::cout << "desc compare " << desc.value_comp()( 1, 2 ) <&l
t; std::endl;
}
関数オブジェクトの大きさはポインタの大きさだった。
% c++ value_comp2.cpp
% ./a.out 
desc sizeof 4
desc compare 0

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/04/21/9369392/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。