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
最近のコメント