std::equal_range
![]() |
ÐÑа ÑÑÑаниÑа бÑла пеÑеведена авÑомаÑиÑеÑки Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкой веÑÑии вики иÑполÑзÑÑ ÐеÑеводÑик Google.
ÐеÑевод Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¾Ñибки и ÑÑÑаннÑе ÑоÑмÑлиÑовки. ÐаведиÑе кÑÑÑÐ¾Ñ Ð½Ð° ÑекÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ Ð¾Ñигинал. ÐÑ Ð¼Ð¾Ð¶ÐµÑе помоÑÑ Ð² иÑпÑавлении оÑибок и ÑлÑÑÑении пеÑевода. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий пеÑейдиÑе по ÑÑÑлке. |
Defined in header <algorithm>
|
||
template< class ForwardIt, class T > std::pair<ForwardIt,ForwardIt> |
(1) | |
template< class ForwardIt, class T, class Compare > std::pair<ForwardIt,ForwardIt> |
(2) | |
value
в оÑÑоÑÑиÑованном диапазоне [first, last)
. Ðиапазон опÑеделÑеÑÑÑ Ð´Ð²ÑÐ¼Ñ Ð¸ÑеÑаÑоÑÑ, один, ÑказÑваÑÑий на пеÑвÑй ÑлеменÑ, коÑоÑÑй ÑвлÑеÑÑÑ' не менÑÑе, Ñем value
и дÑÑгое ÑказÑÐ²Ð°ÐµÑ Ð½Ð° пеÑвÑй ÑлеменÑ' болÑÑе, Ñем value
. ÐеÑвÑй иÑеÑаÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð°Ð»ÑÑеÑнаÑивно, полÑÑеннÑе Ñ lower_bound()
, вÑоÑой - Ñ upper_bound()
.value
in the sorted range [first, last)
. The range is defined by two iterators, one pointing to the first element that is not less than value
and another pointing to the first element greater than value
. The first iterator may be alternatively obtained with lower_bound()
, the second - with upper_bound()
.ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
comp
.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
, а вÑоÑой ÑказÑÐ²Ð°ÐµÑ Ð½Ð° пеÑвÑй ÑлеменÑ' болÑÑе, Ñем value
. value
and the second pointing to the first element greater than value
. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
value
, last
возвÑаÑаеÑÑÑ Ð² каÑеÑÑве пеÑвого ÑлеменÑа. ÐналогиÑно, еÑли Ð½ÐµÑ ÑлеменÑов' болÑÑе, Ñем value
, last
возвÑаÑаеÑÑÑ Ð² каÑеÑÑве вÑоÑого ÑлеменÑаvalue
, last
is returned as the first element. Similarly if there are no elements greater than value
, last
is returned as the second elementÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
[пÑавиÑÑ] СложноÑÑÑ
first
и last
first
and last
ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда.
[пÑавиÑÑ] ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑеализаÑиÑ
ÐеÑвÑй ваÑÐ¸Ð°Ð½Ñ |
---|
template<class ForwardIt, class T std::pair<ForwardIt,ForwardIt> equal_range(ForwardIt first, ForwardIt last, const T& value) { return std::make_pair(std::lower_bound(first, last, value), std::upper_bound(first, last, value)); } |
ÐÑоÑой ваÑÐ¸Ð°Ð½Ñ |
template<class ForwardIt, class T, class Compare> std::pair<ForwardIt,ForwardIt> equal_range(ForwardIt first, ForwardIt last, const T& value, Compare comp); { return std::make_pair(std::lower_bound(first, last, value, comp), std::upper_bound(first, last, value, comp)); } |
[пÑавиÑÑ] ÐÑимеÑ
#include <algorithm> #include <vector> #include <iostream> struct S { int number; char name; S ( int number, char name ) : number ( number ), name ( name ) {} // only the number is relevant with this comparison bool operator< ( const S& s ) const { return number < s.number; } }; int main() { std::vector<S> vec = { {1,'A'}, {2,'B'}, {2,'C'}, {2,'D'}, {3,'F'}, {4,'G'} }; S value ( 2, '?' ); auto p = std::equal_range(vec.begin(),vec.end(),value); for ( auto i = p.first; i != p.second; ++i ) std::cout << i->name << ' '; }
ÐÑвод:
B C D
[пÑавиÑÑ] См. Ñакже
наÑ
Ð¾Ð´Ð¸Ñ Ð¿ÐµÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° болÑÑий или ÑавнÑй, Ñем заданное ÑиÑло (Ñаблон ÑÑнкÑии) | |
наÑ
Ð¾Ð´Ð¸Ñ Ð¿ÐµÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° болÑÑий, Ñем заданное ÑиÑло (Ñаблон ÑÑнкÑии) | |
опÑеделÑеÑ, наÑ
одиÑÑÑ Ð»Ð¸ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² некоÑоÑом диапазоне (Ñаблон ÑÑнкÑии) |