我需要使用Boost.Bind打印插入到矢量中的值。 请在下面找到代码段:
请让我知道我在这里缺少什么?
class Test
{
int i;
public:
Test() {}
Test(int _i)
{
i = _i;
}
void print()
{
cout << i << ",";
}
};
int main()
{
std::vector<Test> vTest;
Test w1(5);
Test w2(6);
Test w3(7);
vTest.push_back(w1);
vTest.push_back(w2);
vTest.push_back(w3);
std::for_each(vTest.begin(), vTest.end(),boost::bind(boost::mem_fn(&Test::print), _1, ?)); // How do I print Vector elements here?
}
答案 0 :(得分:1)
也许您不希望函数i
使用参数print()
?如果是这样,你应该这样做:
std::for_each(vTest.begin(), vTest.end(),boost::bind(&Test::print, _1));
这将输出如下内容:5,6,7,
。请参阅live。
如果您仍希望将某些参数传递给您的函数,则应将其传递给bind()
:
std::for_each(vTest.begin(), vTest.end(),boost::bind(&Test::print, _1, 0));
0
将是Test::print()
的论据。并且,如果您的代码,您将有下一个输出:0,0,0,
。请参阅live。
如果你将功能修复到下一个:
void print(int i)
{
cout << this->i << " " << i << ",";
}
输出将是下一个:5 0,6 0,7 0,
。见live
答案 1 :(得分:1)
你可以不用像这样的提升来做到这一点
Hex::Hex(){//some implementation }
答案 2 :(得分:1)
你不需要在那里绑定。 只需使用以下语句替换代码中的for_each即可。
std::for_each(vTest.begin(), vTest.end(), std::mem_fn(&Test::print)) ;