std::equal_range
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Определено в заголовочном файле <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
[править] См. также
возвращает итератор на первый элемент' не менее, чем заданное значение Оригинал: returns an iterator to the first element not less than the given value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
возвращает итератор на первый элемент' больше, чем определенное значение Оригинал: returns an iterator to the first element greater than a certain value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
определяет, находится ли элемент в некотором диапазоне (шаблон функции) |