首页 新闻 会员 周边

C++泛型算法的谓词函数可不可以带非容器元素类型的参数?

0
悬赏园豆:5 [已解决问题] 解决于 2010-08-26 16:13


vector<string>s1;
count_if(s1.begin(),s1.end(),pred);
bool pred(const string &s)
{
    return s.size()>=6
}

如果现在我想连续比较大于7,大于8的元素个数应该怎么办?

就是6不是定值了,应该往哪传参哈》
怎么处理?

也就是泛型算法的谓词参数可不额可以带非容器元素类型的参数?

finallyly的主页 finallyly | 初学一级 | 园豆:100
提问于:2010-08-26 15:17
< >
分享
最佳答案
0

bool pred(const string &s,int k){ return s.size()>=k;}
class pred2{
private:
int m;
public:
pred2(
const int i):m(i){};
bool operator() (const string &s) { return pred(s,m);};
};


vector
<string>s1;
count_if(s1.begin(),s1.end(),pred2(
3));

 

书上都有的

收获园豆:5
嗷嗷 | 小虾三级 |园豆:757 | 2010-08-26 15:43
函数对象。刚才同学给了我个检索词,正在研究,不过谢谢你写的这么详细。刚刚找到相关内容在C++Primer第十四章,重载操作符14.8节。接分~
finallyly | 园豆:100 (初学一级) | 2010-08-26 16:13
其他回答(2)
0

这要是C#估计要做个Property。。。

undefined | 园豆:898 (小虾三级) | 2010-08-26 15:22
我要C++,不过你的C#解决方案收藏了。分数就不给了。呵呵
支持(0) 反对(0) finallyly | 园豆:100 (初学一级) | 2010-08-26 15:24
0

这其实是个闭包的问题,没研究过在C++里面如何模拟实现闭包。

Ivony... | 园豆:289 (菜鸟二级) | 2010-08-26 15:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册