我一直想知道為什么你不能使用本地定義的類作為STL算法的謂詞。在問題:接近STL算法,lambda,本地類和其他方法,BubbaT提到“ 由于C ++標準禁止將本地類型用作參數(shù) ”示例代碼:int main() { int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; std::vector<int> v( array, array+10 ); struct even : public std::unary_function<int,bool> { bool operator()( int x ) { return !( x % 2 ); } }; std::remove_if( v.begin(), v.end(), even() ); // error}有誰知道標準中的限制在哪里?禁止當(dāng)?shù)仡愋偷睦碛墒鞘裁??編輯:從C ++ 11開始,使用本地類型作為模板參數(shù)是合法的。
2 回答

慕田峪7331174
TA貢獻1828條經(jīng)驗 獲得超13個贊
限制將在'0x中刪除,但我認為你不會非常使用它們。那是因為C ++ - 0x會有l(wèi)ambda!:)
int main() {
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
std::vector<int> v( array, array+10 );
std::remove_if( v.begin()
, v.end()
, [] (int x) -> bool { return !(x%2); })
}
我在上面的語法可能并不完美,但總體思路就在那里。
- 2 回答
- 0 關(guān)注
- 354 瀏覽
添加回答
舉報
0/150
提交
取消