C++STL の std::set に関数オブジェクトを渡す ― 2021年04月21日 11時57分59秒
関数オブジェクトをコンテナに渡す時の宣言をいつも忘れる。テンプレート引数の所に、比較式を書けば良いだけだ。
関数オブジェクトの大きさはポインタの大きさだった。
#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: http://uyota.asablo.jp/blog/2021/04/21/9369392/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。