Алгоритм transform()
Алгоритм transform()
template class InputIterator, class OutputIterator,
class UnaryOperation
OutputIterator
transform( InputIterator first, InputIterator last,
OutputIterator result, UnaryOperation op );
template class InputIterator1, class InputIterator2,
class OutputIterator, class BinaryOperation
OutputIterator
transform( InputIterator1 first1, InputIterator1 last,
InputIterator2 first2, OutputIterator result,
BinaryOperation bop );
Первый вариант transform() генерирует новую последовательность, применяя операцию op к каждому элементу из диапазона [first,last). Например, если есть последовательность {0,1,1,2,3,5} и объект-функция Double, удваивающий свой аргумент, то в результате получим {0,2,2,4,6,10}.
Второй вариант генерирует новую последовательность, применяя бинарную операцию bop к паре элементов, один из которых взят из диапазона [first1,last1), а второй - из последовательности, начинающейся с first2. Поведение программы не определено, если во второй последовательности меньше элементов, чем в первой. Например, для двух последовательностей {1,3,5,9} и {2,4,6,8} и объекта-функции AddAndDouble, которая складывает два элемента и удваивает их сумму, результатом будет {6,14,22,34}.
Оба варианта transform() помещают результирующую последовательность в контейнер с элемента, на который указывает итератор result. Этот итератор может адресовать и элемент любого из входных контейнеров, в таком случае исходные элементы будут заменены на результат выполнения transform(). Выходной итератор указывает на элемент за последним помещенным в результирующий контейнер.
#include algorithm
#include vector
#include math.h
#include iostream.h
/*
* печатается:
исходный массив: 3 5 8 13 21
преобразование элементов путем удваивания: 6 10 16 26 42
преобразование элементов путем взятия разности: 3 5 8 13 21
*/
int double_val( int val ) { return val + val; }
int difference( int val1, int val2 ) {
return abs( val1 - val2 ); }
int main()
{
int ia[] = { 3, 5, 8, 13, 21 };
vectorint, allocator vec( 5 );
ostream_iteratorint outfile( cout, " " );
cout "исходный массив: ";
copy( ia, ia+5, outfile ); cout endl;
cout "преобразование элементов путем удваивания: ";
transform( ia, ia+5, vec.begin(), double_val );
copy( vec.begin(), vec.end(), outfile ); cout endl;
cout "преобразование элементов путем взятия разности: ";
transform( ia, ia+5, vec.begin(), outfile, difference );
cout endl;
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
8.1.1 Алгоритм
8.1.1 Алгоритм Сразу после переключения контекста ядро запускает алгоритм планирования выполнения процессов (Рисунок 8.1), выбирая на выполнение процесс с наивысшим приоритетом среди процессов, находящихся в состояниях "резервирования" и "готовности к выполнению, будучи
Преобразовать (Transform)
Преобразовать (Transform) template ‹class InputIterator, class OutputIterator, class UnaryOperation›OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op);template ‹class InputIterator1, class InputIterator2, class OutputIterator, class Binary0peration›OutputIterator transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperation binary_op);transform
Алгоритм max()
Алгоритм max() template class Type const Type&max( const Type &aval, const Type &bval );template class Type, class Compare const Type&max( const Type &aval, const Type &bval, Compare comp );max() возвращает наибольшее из двух значений aval и bval. В первом варианте используется оператор "больше", определенный в классе Type; во втором - операция
Алгоритм min()
Алгоритм min() template class Type const Type&min( const Type &aval, const Type &bval );template class Type, class Compare const Type&min( const Type &aval, const Type &bval, Compare comp );min() возвращает меньшее из двух значений aval и bval. В первом варианте используется оператор “меньше”, определенный для типа Type; во втором - операция
Алгоритм nth_element()
Алгоритм nth_element() template class RandomAccessIterator voidnth_element( RandomAccessIterator first,RandomAccessIterator nth,RandomAccessIterator last );template class RandomAccessIterator, class Compare voidnth_element( RandomAccessIterator first,RandomAccessIterator nth,RandomAccessIterator last, Compare comp );nth_element() переупорядочивает последовательность, ограниченную диапазоном [first,last), так что все
Алгоритм partial_sort()
Алгоритм partial_sort() template class RandomAccessIterator voidpartial_sort( RandomAccessIterator first,RandomAccessIterator middle,RandomAccessIterator last );templatepartial_sort() сортирует часть последовательности, укладывающуюся в диапазон [first,middle). Элементы в диапазоне [middle,last) остаются неотсортированными. Например, если дан массивint ia[] =
Алгоритм partial_sum()
Алгоритм partial_sum() template class InputIterator, class OutputIterator OutputIteratorpartial_sum(InputIterator first, InputIterator last,OutputIterator result );template class InputIterator, class OutputIterator,class BinaryOperation OutputIteratorpartial_sum(InputIterator first, InputIterator last,OutputIterator result, BinaryOperation op );Первый вариант partial_sum() создает из последовательности, ограниченной
Алгоритм partition()
Алгоритм partition() template class BidirectionalIterator, class UnaryPredicate BidirectionalIteratorpartition(BidirectionalIterator first,BidirectionalIterator last, UnaryPredicate pred );partition() переупорядочивает элементы в диапазоне [first,last). Все элементы, для которых предикат pred равен true, помещаются перед элементами, для которых он равен false.
Алгоритм random_shuffle()
Алгоритм random_shuffle() template class RandomAccessIterator voidrandom_shuffle( RandomAccessIterator first,RandomAccessIterator last );template class RandomAccessIterator,class RandomNumberGenerator voidrandom_shuffle( RandomAccessIterator first,RandomAccessIterator last,RandomNumberGenerator rand);random_shuffle() переставляет элементы из диапазона [first,last) в случайном порядке. Во втором варианте можно
Элементы xsl:stylesheet и xsl:transform
Элементы xsl:stylesheet и xsl:transform <xsl:stylesheet id="идентификатор" extension-element-prefixes="префиксы" exclude-result-prefixes="префиксы" version="число"> <!-- Содержимое: несколько элементов xsl:import, элементы верхнего уровня --></xsl:stylesheet><xsl:transform
style="text-transform: uppercase;">ПИСЬМОНОСЕЦ
style="text-transform: uppercase;">ПИСЬМОНОСЕЦ Автор: Илья Щуров VoyagerЗдравствуй, уважаемая Терра!Являюсь вашим читателем уже два года. Читаю журнал не всегда, но практически от корки до корки, особенно меня интересует OpenSource/Freeware software и Linux. Я линуксоид, и поэтому сторонник лицензионного
12.3. Free Transform (Произвольное трансформирование)
12.3. Free Transform (Произвольное трансформирование) Если предыдущие инструменты изменения размеров предназначены для всего изображения, то Free Transform (Произвольное трансформирование) позволяет изменять не только размеры, но и пропорции, угол поворота для выделенного объекта или
12.4. Подменю Transform (трансформирование)
12.4. Подменю Transform (трансформирование) Кроме режима свободного трансформирования, в Photoshop есть группа инструментов, выполняющих схожие функции по трансформированию. Они объединены в подменю Edit ? Transform (Правка ? Трансформирование).Впрочем, не советую запускать эти
Обычное движение ("Transform")
Обычное движение ("Transform") Это самое обычное движение фрагмента графики, наподобие тех, что мы создавали в главе 12. С помощью этого преобразования мы можем менять местоположение, размеры, угол поворота выделенного фрагмента и задавать для него цветовые эффекты.Чтобы