[英]std::minmax initializer_list<T> argument
也許這個問題有點理論上的問題 ,但是我不知道像這樣定義std::minmax
背后的設計動機是什么?
template <class T>
pair<T,T> minmax (initializer_list<T> il);
這意味着將復制傳遞的對象li
IMO,並且其每個成員也必須是可復制構造的。
雖然std::min_element
(或就此而言, std::max_element
)在僅傳遞容器迭代器的意義上更“有效”(無需實際復制整個容器)
template <class ForwardIterator>
ForwardIterator min_element (ForwardIterator first, ForwardIterator last);
編輯-基於Joachim Pileborg的注釋, initializer_list<T>
對象沒有被復制,因此我要指出我的問題-為什么std::minmax
限於此類對象而不是任意容器(具有“非常量”性質) , 可以這么說)
對於您的更新問題: minmax
也可以與成對的迭代器一起使用,這稱為minmax_element
。 所以minmax
本身只是一個方便的簡寫,可以編寫如下緊湊的代碼:
// define a, b, c here
int min, max;
std::tie(min, max) = std::minmax({a, b, c});
...而不是這樣寫:
// define a, b, c here
int min, max;
auto list = {a, b, c};
auto result = std::minmax_element(list.begin(), list.end());
min = *result.first;
max = *result.second;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.