Программирование >>  Инициализация объектов класса, структура 

1 ... 362 363 364 [ 365 ] 366 367 368 ... 395


template< class ForwardIterator, class Type > pair< ForwardIterator, ForwardIterator > eal range( ForwardIterator first,

ForwardIterator last, const Type &value );

template< class ForwardIterator, class Type, class Compare > pair< ForwardIterator, ForwardIterator > eal range( ForwardIterator first,

ForwardIterator last, const Type &value,

Алгоритм equal range()

Compare comp );

eal range() возвращает пару итераторов: первый представляет значение итератора, возвращаемое алгоритмом lower bound() , второй - алгоритмом upper bound() . (О семантике этих алгоритмов рассказано в их описаниях.) Например, дана последовательность:

int ia[] = {12,15,17,19,20,22,23,26,29,35,40,51};

Обращение к equal range() со значением 21 возвращает пару итераторов, в которой оба указывают на значение 22. Обращение же со значением 22 возвращает пару итераторов, где first указывает на 22, а second - на 23. В первом варианте при сравнении используется оператор меньше , определенный для типа элементов контейнера; во втором - предикат comip.



С++ для начинающих 1096

#include <algorithm> #include <vector> #include <utility> #include <iostream.h>

/* печатается:

последовательность элементов массива после сортировки:

12 15 17 19 20 22 23 26 29 35 40 51

результат eal range при поиске значения 23:

*ia iter.first: 23 *ia iter.second: 26

результат eal range при поиске отсутствующего значения 21: *ia iter.first: 22 *ia iter.second: 22

последовательность элементов вектора после сортировки: 51 40 35 29 26 23 22 20 19 17 15 12

результат eal range при поиске значения 26:

*ivec iter.first: 26 *ivec iter.second: 23

результат eal range при поиске отсутствующего значения 21: *ivec iter.first: 20 *ivec iter.second: 20

int main() {

int ia[] = { 29,23,20,22,17,15,26,51,19,12,35,40 }; vector< int, allocator > ivec( ia, ia+12 ); ostream iterator< int > ofile( cout, );

sort( &ia[0] , &ia[12] );

cout << последовательность элементов массива после сортовки:\п ; copy( ia, ia+12, ofile ); cout << \n\n ;

pair< int*,int* > ia iter;

ia iter = eal range( &ia[0], &ia[12], 23 );

cout << результат eal range при поиске значения 23:\n\t << *ia iter.first: << *ia iter.first << \t

<< *ia iter.second: << *ia iter.second << \n\n ;

ia iter = eal range( &ia[0], &ia[12], 21 );

cout << результат eal range при поиске << отсутствующего значения 21:\n\t

<< *ia iter.first: << *ia iter.first << \t

<< *ia iter.second: << *ia iter.second << \n\n ; sort( ivec.begin(), ivec.end(), greater<int>() );

cout << последовательность элементов вектора после сортовки:\п ; copy( ivec.begin(), ivec.end(), ofile ); cout << \n\n ;

typedef vector< int, allocator >::iterator iter ivec; pair< iter ivec, iter ivec > ivec iter;

ivec iter = eal range( ivec.begin(), ivec.end(), 26,

greater<int>() );

cout << результат eal range при поиске значения 26:\n\t

<< *ivec iter.first: << *ivec iter.first << \t

<< *ivec iter.second: << *ivec iter.second

<< \n\n ;

ivec iter = eal range( ivec.begin(), ivec.end(), 21,

greater<int>() );

cout << результат eal range при поиске отсутствующего значения

21:\n\t

<< *ivec iter.first: << *ivec iter.first << \t

<< *ivec iter.second: << *ivec iter.second

<< \n\n ;



template< class ForwardIterator, class Type > void

fill( ForwardIterator first,

Алгоритм fill()

ForwardIterator last, const Type& value );

fill() помещает копию значения value в каждый элемент диапазона, ограниченного парой итераторов [first,last) .



1 ... 362 363 364 [ 365 ] 366 367 368 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика