为了账号安全,请及时绑定邮箱和手机立即绑定

使用STL算法的本地类

使用STL算法的本地类

C++
眼眸繁星 2019-09-03 15:30:36
我一直想知道为什么你不能使用本地定义的类作为STL算法的谓词。在问题:接近STL算法,lambda,本地类和其他方法,BubbaT提到“ 由于C ++标准禁止将本地类型用作参数 ”示例代码: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}有谁知道标准中的限制在哪里?禁止当地类型的理由是什么?编辑:从C ++ 11开始,使用本地类型作为模板参数是合法的。
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

限制将在'0x中删除,但我认为你不会非常使用它们。那是因为C ++ - 0x会有lambda!:)


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); })

}

我在上面的语法可能并不完美,但总体思路就在那里。


查看完整回答
反对 回复 2019-09-03
  • 2 回答
  • 0 关注
  • 333 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信