std::upper_bound
![]() |
ÐÑа ÑÑÑаниÑа бÑла пеÑеведена авÑомаÑиÑеÑки Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкой веÑÑии вики иÑполÑзÑÑ ÐеÑеводÑик Google.
ÐеÑевод Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¾Ñибки и ÑÑÑаннÑе ÑоÑмÑлиÑовки. ÐаведиÑе кÑÑÑÐ¾Ñ Ð½Ð° ÑекÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ Ð¾Ñигинал. ÐÑ Ð¼Ð¾Ð¶ÐµÑе помоÑÑ Ð² иÑпÑавлении оÑибок и ÑлÑÑÑении пеÑевода. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий пеÑейдиÑе по ÑÑÑлке. |
Defined in header <algorithm>
|
||
template< class ForwardIt, class T > ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value ); |
(1) | |
template< class ForwardIt, class T, class Compare > ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value, Compare comp ); |
(2) | |
[first, last)
Ñо еÑÑÑ' болÑÑе, Ñем value
. ÐеÑвÑй ваÑÐ¸Ð°Ð½Ñ Ð¸ÑполÑзÑеÑÑÑ operator< Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑлеменÑов, вÑоÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð´Ð°Ð½Ð½ÑÑ ÑÑнкÑÐ¸Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ comp
.[first, last)
that is greater than value
. The first version uses operator< to compare the elements, the second version uses the given comparison function comp
.ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
СодеÑжание |
[пÑавиÑÑ] ÐаÑамеÑÑÑ
first, last | â | диапазон ÑлеменÑов Ð´Ð»Ñ Ð¸Ð·ÑÑениÑ
ÐÑигинал: the range of elements to examine ТекÑÑ Ð±Ñл пеÑеведÑн авÑомаÑиÑеÑки иÑполÑзÑÑ ÐеÑеводÑик Google. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда. |
value | â | ÐнаÑение Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑлеменÑов
ÐÑигинал: value to compare the elements to ТекÑÑ Ð±Ñл пеÑеведÑн авÑомаÑиÑеÑки иÑполÑзÑÑ ÐеÑеводÑик Google. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда. |
comp | â | ÑÑнкÑÐ¸Ñ ÑÑавнениÑ, возвÑаÑаÑÑÐ°Ñ âtrue еÑли пеÑвÑй аÑгÑÐ¼ÐµÐ½Ñ Ð¼ÐµÐ½ÑÑе вÑоÑого. СигнаÑÑÑа ÑÑнкÑии ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ ÑквиваленÑна ÑледÑÑÑей: bool cmp(const Type1 &a, const Type2 &b); СигнаÑÑÑа на обÑзана ÑодеÑжаÑÑ const &, однако, ÑÑнкÑÐ¸Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð¿ÐµÑеданнÑе обÑекÑÑ. |
ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº Ñипам | ||
-ForwardIt должен ÑооÑвеÑÑÑвоваÑÑ ÑÑебованиÑм ForwardIterator .
|
[пÑавиÑÑ] ÐозвÑаÑаемое знаÑение
value
, или last
, еÑли Ñакой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ðµ найден.value
, or last
if no such element is found.ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
[пÑавиÑÑ] ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑеализаÑиÑ
ÐеÑвÑй ваÑÐ¸Ð°Ð½Ñ |
---|
template<class ForwardIt, class T> ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value) { ForwardIt it; std::iterator_traits<ForwardIt>::distance_type count, step; count = std::distance(first,last); while (count > 0) { it = first; step = count / 2; std::advance(it, step); if (!(value < *it)) { first = ++it; count -= step + 1; } else count = step; } return first; } |
ÐÑоÑой ваÑÐ¸Ð°Ð½Ñ |
template<class ForwardIt, class T, class Compare> ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value, Compare comp) { ForwardIt it; std::iterator_traits<ForwardIt>::distance_type count, step; count = std::distance(first,last); while (count > 0) { it = first; step = count / 2; std::advance(it, step); if (!comp(value, *it)), first = ++it; count -= step + 1 } else count = step; } return first; } |
[пÑавиÑÑ] ÐÑимеÑ
#include <algorithm> #include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> data = { 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6 }; auto lower = std::lower_bound(data.begin(), data.end(), 4); auto upper = std::upper_bound(data.begin(), data.end(), 4); std::copy(lower, upper, std::ostream_iterator<int>(std::cout, " ")); }
ÐÑвод:
4 4 4
[пÑавиÑÑ] СложноÑÑÑ
first
и last
first
and last
ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
[пÑавиÑÑ] См. Ñакже
возвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ ÑлеменÑов Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного клÑÑа ÐÑигинал: returns range of elements matching a specific key ТекÑÑ Ð±Ñл пеÑеведÑн авÑомаÑиÑеÑки иÑполÑзÑÑ ÐеÑеводÑик Google. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда. (Ñаблон ÑÑнкÑии) | |
наÑ
Ð¾Ð´Ð¸Ñ Ð¿ÐµÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° болÑÑий Ñем заданное ÑиÑло или ÑавнÑй ÐµÐ¼Ñ (Ñаблон ÑÑнкÑии) |