0
函數對象randomElementByWeight構造函數是否在循環中每次迭代都被調用,或者編譯器是否可以優化它?我想確保每次迭代都調用rand函數,並且我認爲將它放在函數對象構造函數中會更好。for循環中的臨時函數對象
struct randomElementByWeight
{
double randomNumber;
randomElementByWeight() : randomNumber(rand()/static_cast<double>(RAND_MAX)) {}
bool operator()(const Element& e)
{
if ((randomNumber -= e.weight) <= 0.0)
{
return true;
}
return false;
}
};
...
for (int i = 0; i < 3; ++i)
{
iter = find_if(routes.begin(), routes.end(), randomElementByWeight());
}
我得到一個警告,當我做到這一點警告MS VS2008 C4800: '雙師型':強制值bool'true'或'false'(性能警告) – ephi
@ephi:不可能,'<='運算符產生一個bool。你忘記了括號還是什麼? – fredoverflow
是。我一定錯過了什麼。我再次嘗試,並確定 – ephi