c语言 STL问题,求各位大虾帮忙

[复制链接]
查看11 | 回复1 | 2011-4-27 00:53:32 | 显示全部楼层 |阅读模式
#include
#include
#include
using namespace std;
template
class value_equals
{
private:
V value;
public:
value_equals( const V& v ): value( v ){}
bool operator() ( pair elem )
{
return elem.second == value;
}
};
int main()
{
typedef map FloatFloatMap;
FloatFloatMap coll;
FloatFloatMap::iterator pos;
coll[1] = 7;
coll[2] = 4;
coll[3] = 2;
coll[4] = 3;
coll[5] = 6;
coll[6] = 1;
coll[7] = 3;
pos = coll.find( 3.0 );
if( pos != coll.end() )
{
cout first second (3.0) );
if( pos != coll.end() )
{
cout first second << endl;
}
}
其中那个bool operator() 函数有什么作用呢???

回复

使用道具 举报

千问 | 2011-4-27 00:53:32 | 显示全部楼层
那个operator声明了一个圆括号的重载。用法类似这个的:,简单点的说 就是个重载int a[] = {0,1,2,3,4,5,6,7,8,9};cout << *find_if(a, a + sizeof a/sizeof a[0], bind2nd(greater(), 5));在find_if函数里它会调用greater()的圆括号重载,bind2nd的作用就是把5绑定为greater()()的第二个参数,如:greater()(x, 5),其中x是数组的每个元素。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行