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 и lastfirst 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
[править] См. также
| то же самое что и upper_bound (шаблон функции) | |
| то же самое что и lower_bound (шаблон функции) | |
| определяет, находится ли элемент в некотором диапазоне (шаблон функции) | |