sort( ivec.begin(), ivec.end(), greaterint() );
cout "последовательность элементов вектора после сортировки:\n";
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 = equal_range( ivec.begin(), ivec.end(), 26,
greaterint() );
cout "результат equal_range при поиске значения 26:\n\t"
"*ivec_iter.first: " *ivec_iter.first "\t"
"*ivec_iter.second: " *ivec_iter.second
"\n\n";
ivec_iter = equal_range( ivec.begin(), ivec.end(), 21,
greaterint() );
cout "результат equal_range при поиске отсутствующего значения 21:\n\t"
"*ivec_iter.first: " *ivec_iter.first "\t"
"*ivec_iter.second: " *ivec_iter.second
"\n\n";
}
Алгоритм fill()
template class ForwardIterator, class Type
void
fill( ForwardIterator first,
ForwardIterator last, const Type& value );
fill() помещает копию значения value в каждый элемент диапазона, ограниченного парой итераторов [first,last).
#include algorithm
#include list
#include string
#include iostream.h
/* печатается:
исходная последовательность элементов массива:
0 1 1 2 3 5 8
массив после fill(ia+1,ia+6):
0 9 9 9 9 9 8
исходная последовательность элементов списка:
c eiffel java ada perl
список после fill(++ibegin,--iend):
c c++ c++ c++ perl
*/
int main()
{
const int value = 9;
int ia[] = { 0, 1, 1, 2, 3, 5, 8 };
ostream_iterator int ofile( cout, " " );
cout "исходная последовательность элементов массива:\n";
copy( ia, ia+7, ofile ); cout "\n\n";
fill( ia+1, ia+6, value );
cout "массив после fill(ia+1,ia+6):\n";
copy( ia, ia+7, ofile ); cout "\n\n";
string the_lang( "c++" );
string langs[5] = { "c", "eiffel", "java", "ada", "perl" };
list string, allocator il( langs, langs+5 );
ostream_iterator string sofile( cout, " " );
cout "исходная последовательность элементов списка:\n";
copy( il.begin(), il.end(), sofile ); cout "\n\n";
typedef liststring,allocator ::iterator iterator;
iterator ibegin = il.begin(), iend = il.end();
fill( ++ibegin, --iend, the_lang );
cout "список после fill(++ibegin,--iend):\n";
copy( il.begin(), il.end(), sofile ); cout "\n\n";
}
Алгоритм fill_n()
template class ForwardIterator, class Size, class Type
void
fill_n( ForwardIterator first,
Size n, const Type& value );
fill_n() присваивает count элементам из диапазона [first,first+count) значение value.
#include algorithm
#include vector
#include string
#include iostream.h
class print_elements {
public:
void operator()( string elem ) {
cout elem
( _line_cnt++%8 ? " " : "\n\t" );
}
static void reset_line_cnt() { _line_cnt = 1; }
private:
static int _line_cnt;
};
int print_elements::_line_cnt = 1;
/* печатается: