2
給出這個小片段:a和b在編譯時不知道。 Map是矢量的映射函數,將lambda函數映射到條的每個元素上。假設fooify()被調用......在執行map()之前,a/b會被當作一個常量來計算嗎?或者每次調用lambda時都會計算它嗎?何時評估lambda函數中的表達式?
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
map(bar, [&](float c){c*(a/b);});
}
你怎麼能區分?如果你分辨不清,那麼你究竟在問什麼? –
區別在於,在第一種情況下,將會有一項劃分操作,第二種情況下將會有200萬。我可以簡單地通過預先計算簡單地解決問題,我只想知道實際將發生什麼。 –