C++ でLambda 関数を使用する方法を理解したいです。
次のように、カスタムタイプを使用しています。
struct my_toy_t {
uint32_t id;
cv::Rect box;
cv::Mat data;
}
typedef std::map<uint32_t, my_toy_t*> my_toy_map_t;
と:
int main() {
my_toy_map_t input_map;
my_toy_map_t output_map;
// Some insertions in input_map...
my_toy_map_t::iterator it;
for (it = input_map.begin(); it != input_map.end(); ++it)
{
if (check_cond(it->second->box)) {
output_map.insert(std::make_pair(it->first, it->second));
input_map.erase(it->first);
}
}
return 0;
}
bool check_cond(cv::Rect box) {
if (box.area > 100)
return true;
else
return false;
}
my_toy_map_t
は単なる でありstd::map<uint32_t, my_toy_t*>
、check_cond
関数は単純な条件をチェックすることに注意してください。
Lamba関数を使用して、このコード ( ifへの挿入と if からの削除) を変換することは可能ですか?output map
input_map
check_cond
true