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

Passing vector by reference in boost::bind

本文关键字:引用 向量 boost bind      更新时间:2023-10-16

为什么这个 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 没有被修改。

boost/std::bind()只构造函数对象。您仍然必须调用它,以便执行其中的任何代码。

要获取 1 的输出,请替换该行

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

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