C++アルゴリズム要素の最大値と最小値
31134 ワード
前に書くとここでは、要素の最大値と最小値を取得するためのC++標準ライブラリの3つの非容易アルゴリズム(nonmodifying algorithm):min_element、 max_Elementとmin_max_element.同様にヘッダファイルに定義されます.
二Demoコード: std::distance C++iterator(1)いくつかの補助関数 を参照してください.結果: 注意: min_Elementは、[first,last]の最初の最小値を指す反復器 を返す. max_Elementは、[first,last]の最初の最大値を指す反復器 を返す. minmax_elementはstd::pair<最初の最小値の反復器、最後の最大値の反復器> を返します.
三min_element
四max_element
五minmax_element (C++11)
六参考『C++標準ライブラリ第2版』 cppreference min_element cppreference max_element cppreference minmax_element
二Demo
#include
#include
#include
#include
#include
template <typename C>
void fill(C& container, int begin, int end) {
for (auto i = begin; i <= end; i++) {
container.emplace_back(i);
}
}
template <typename C>
void print(const std::string& pre, C container) {
std::cout << pre;
std::copy(container.begin(), container.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
int main() {
{
// min_element max_element min_max_element
std::vector<int> vc;
vc.emplace_back(1);
fill(vc, 1, 9);
vc.emplace_back(9);
vc.emplace_back(9);
print1("vc: ", vc);
auto min = std::min_element(vc.begin(), vc.end());
std::cout << "No." << std::distance(vc.begin(), min)
<< " is the min element." << std::endl;
auto max = std::max_element(vc.begin(), vc.end());
std::cout << "No." << std::distance(vc.begin(), max)
<< " is the max element." << std::endl;
auto min_max = std::minmax_element(vc.begin(), vc.end());
std::cout << "min_max is No." << std::distance(vc.begin(), min_max.first)
<< " and No." << std::distance(vc.begin(), min_max.second) << std::endl;
}
std::cin.get();
return 0;
}
vc: 1 1 2 3 4 5 6 7 8 9 9 9
No.0 is the min element.
No.9 is the max element.
min_max is No.0 and No.11
三min_element
template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );(1)(until C++17)
template< class ForwardIt >
constexpr ForwardIt min_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
ForwardIt min_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );(3)(until C++17)
template< class ForwardIt, class Compare >
constexpr ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
ForwardIt min_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last,
Compare comp );(4)(since C++17)
四max_element
template< class ForwardIt >
ForwardIt max_element( ForwardIt first, ForwardIt last );(1)(until C++17)
template< class ForwardIt >
constexpr ForwardIt max_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
ForwardIt max_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );(3)(until C++17)
template< class ForwardIt, class Compare >
constexpr ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
ForwardIt max_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last,
Compare comp );(4)(since C++17)
五minmax_element (C++11)
template< class ForwardIt >
std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last );(1)(since C++11)(until C++17)
template< class ForwardIt >
constexpr std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
std::pair<ForwardIt,ForwardIt>
minmax_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++11)(until C++17)
template< class ForwardIt, class Compare >
constexpr std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
std::pair<ForwardIt,ForwardIt>
minmax_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, Compare comp );(4)(since C++17)
六参考