在boost :: bind中通过引用传递向量

时间:2012-07-04 21:47:01

标签: c++ boost

为什么输出为0?

http://ideone.com/S7hgv

#include <boost/bind.hpp>
#include <vector>
#include <iostream>

using namespace std;

void f2(vector<int> &h)
{
        h.clear();
        h.push_back(0);
}

void f1(vector<int> &h)
{
        boost::bind(f2, boost::ref(h));
}

int main()
{
        vector<int> h;
        f1(h);

        cout << h.size() << "\n";
}

我需要它为1,由于某种原因h不会被修改。

1 个答案:

答案 0 :(得分:4)

boost/std::bind()仅构造函数对象。你仍然需要调用它,以便执行任何代码。

要获得1的输出,请替换

    boost::bind(f2, boost::ref(h));

    boost::bind(f2, boost::ref(h))();