|
Программирование >> Инициализация объектов класса, структура
#include <algorithm> #include <vector> #include <iostream.h> /* печатается: исходная последовательность: 0 1 1 2 3 5 8 13 21 34 последовательность после применения remove if < 10: 13 21 34 последовательность после применения remove copy if четное: 1 1 3 5 13 21 class EvenValue { public: bool operator()( int value ) { return value % 2 ? false : true; } int main() { int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 }; vector< int, allocator >::iterator iter; vector< int, allocator > vec( ia, ia+10 ); ostream iterator< int > ofile( cout, ); cout << исходная последовательность:\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n; iter = remove if( vec.begin(), vec.end(), bind2nd(less<int>(),10) ); vec.erase( iter, vec.end() ); cout << последовательность после применения remove if < 10:\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n; vector< int, allocator > vec res( 10 ); iter = remove copy if( ia, ia+10, vec res.begin(), EvenValue() cout << последовательность после применения remove copy if четное:\n ; copy( vec res.begin(), iter, ofile ); cout << \n; template< class ForwardIterator, class Type > void replace( ForwardIterator first, ForwardIterator last, Алгоритм replace() const Type& old value, const Type& nevalue ); template< class InputIterator, class InputIterator, 1 Флгл class Type > OutputIterator replace copy( InputIterator first, InputIterator last, class OutputIterator result, Алгоритм replace copy() const Type& old value, const Type& nevalue ); replace copy() ведет себя так же, как replace() , только новая последовательность копируется в контейнер, начиная с result. Возвращаемый итератор указывает на элемент, расположенный за последним скопированным. Исходный контейнер остается без изменения. replace() заменяет в диапазоне [first,last) все элементы со значением old value на new value. #include <algorithm> #include <vector> #include <iostream.h> /* печатается: исходная последовательность: Christopher Robin Mr. Winnie the Pooh Piglet Tigger Eeyore последовательность после применения replace(): Christopher Robin Pooh Piglet Tigger Eeyore int main() nie the Pooh ); string oldval( Mr. Winn string newval( Pooh ); ostream iterator< string > ofile( cout, ); string sa[] = { Christopher Robin , Mr. Winnie the Pooh , Piglet , Tigger , Eeyore vector< string, allocator > vec( sa, sa+5 ); cout << исходная последовательность:\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n; replace( vec.begin(), vec.end(), oldval, newval ); cout << последовательность после применения replace():\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n; vector< string, allocator > vec2; replace copy( vec.begin(), vec.end(), inserter( vec2, vec2.begin() ), newval, oldval ); cout << последовательность после применения replace copy():\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n; template< class ForwardIterator, class Predicate, class Type > void replace if( ForwardIterator first, ForwardIterator last, Алгоритм replace if() Predicate pred, const Type& nevalue ); replace if() заменяет значения всех элементов в диапазоне [first,last) , для которых предикат pred равен true, на new value.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |