18
我正在嘗試將std::accumulate
與std::min
結合使用。像這樣的東西(不會編譯):是否有可能使用std :: accumulate和std :: min?
vector<int> V{2,1,3};
cout << accumulate(V.begin()+1, V.end(), V.front(), std::min<int>);
這可能嗎? 有沒有可能爲std::min
寫包裝仿函數?
我知道,我可以用lambda表達式做到這一點:
vector<int> V{2,1,3};
cout << std::accumulate(
V.begin()+1, V.end(),
V.front(),
[](int a,int b){ return min(a,b);}
);
而且我知道有std::min_element
。我不是想找到最小元素,我需要將std::accumulate
與std::min
(或::min
)結合起來用於我的庫,該庫允許在C++中使用函數式編程(如表達式)。
你可以使用一個醜陋投過'(const int的&(*)(const int的&,const int的&))的std ::分鐘'。 –
2012-07-24 08:07:25
我傾向於更喜歡lambda版本。 – moooeeeep 2012-07-24 08:07:51
@JesseGood:你沒有'static_cast'? :\ – Mehrdad 2012-07-24 08:08:04