bool takeInt(int a,int b)
{
cout << a << " " << b << endl; return true;
}
int main()
{
map<int,int> m;
m.insert(make_pair(1,2));
m.insert(make_pair(2,5));
m.insert(make_pair(4,8));
m.insert(make_pair(5,6));
for_each(m.begin(),m.end(),boost::bind(&takeInt,42,boost::bind(&pair<int,int>::first,_1)));
return 0;
}
我想要输出
42 1
42 2
42 4
42 5
错误编译失败。 关于我缺少什么的任何线索?
答案 0 :(得分:1)
map<T, U>::value_type
的类型为pair<const T, U>
。使用此:
for_each(m.begin(),m.end(),
boost::bind(&takeInt, 42, boost::bind(&pair<const int,int>::first,_1)));
^^^^^