我有一個std :: vector,我想檢查每個元素的特定屬性 。 SomeStruct有一個屬性'type'。我想檢查此屬性 爲Type1或Type2。如何將boost :: lambda與std :: find_if一起使用?
我的計劃是使用boost :: lambda。
std::vector<SomeStruct>::const_iterator it =
std::find_if(
vec.begin(), vec.end(),
_1.type == SomeStruct::Type1 || _1.type == SomeStruct::Type2);
因爲我需要訪問每個元素的特定屬性,我不知道如果我能 使用boost ::拉姆達的。
任何提示?
這是完美的,但我無法理解它爲什麼有效。如果綁定(&SomeStruct :: func,_1)(func是一個函數),它也會以相同的方式工作,這會讓我更加困惑。 – yhager 2012-07-13 06:35:56
@yhager'bind(&SomeStruct :: type,_1)'給你一個boost lambda,代表在'_1'是一個佔位符的對象上執行'.type'的結果。欲瞭解更多信息[請參閱綁定文檔](http://www.boost.org/doc/libs/1_50_0/doc/html/lambda/le_in_details.html#lambda.bind_expressions)。 – sepp2k 2012-07-13 14:36:07