我需要使用Boost.Bind打印插入 vector 中的值。
请在下面找到代码片段:
请让我知道我在这里想念的吗?
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?
}
最佳答案
你可以像这样没有助益
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
class Test {
int i;
public:
Test() {
}
Test(int _i) {
i = _i;
}
void print() const {
std::cout << i << std::endl;
}
};
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);
// use lambda
std::for_each(vTest.begin(), vTest.end(), [&](const Test& t){ t.print(); });
// use std::bind
std::for_each(vTest.begin(), vTest.end(), std::bind(&Test::print, std::placeholders::_1));
return 0;
}