我想要調用向量中的每個對象的成員函數,使用指定的參數,並且我希望調用是多態的。我相信下面顯示的函數vstuff實現了這一點。但是可以修改vstuff以創建一個向量< shared_ptr < Base>>不使用boost :: bind?我必須使用boost :: bind來創建多態「變換」功能嗎?
class Base{
virtual double stuff(double t);
}
//and some derived classes overriding stuff
//then in some code
vector<double> vstuff(double t, vector<Base*> things)
{
vector<double> vals;
vals.resize(things.size());
transform(things.begin(), things.end(), vals.begin(), std::bind2nd(std::mem_fun(&Base::stuff),t));
return vals;
}
我知道shared_ptr的小號需要的mem_fn代替mem_fun,但我還沒有成功地使的mem_fn工作與bind2nd我需要在參數t通過,所以我不知道它是否是可行的.. ?
爲什麼不使用lambda表達式? – Lol4t0 2015-03-08 22:14:30
我想了解如何以最小的提升使用率來實現此目的,而且該項目不是C++ 11。 – imateapot 2015-03-08 22:36:07
爲什麼你想要使用std :: transform而不是一個簡單的循環? – MikeMB 2015-03-08 23:09:01