我需要使用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;
}

10-06 09:14