Читаем C++ для начинающих полностью

copy() копирует последовательность элементов, ограниченную парой итераторов [first,last), в другой контейнер, начиная с позиции, на которую указывает first2. Алгоритм возвращает итератор, указывающий на элемент второго контейнера, следующий за последним вставленным. Например, если дана последовательность {0,1,2,3,4,5}, мы можем сдвинуть элементы на один влево с помощью такого вызова:

int ia[] = {0, 1, 2, 3, 4, 5 };

// сдвинуть элементы влево на один, получится {1,2,3,4,5,5}

copy( ia+1, ia+6, ia );

copy() начинает копирование со второго элемента ia, копируя 1 в первую позицию, и так далее, пока каждый элемент не окажется в позиции на одну левее исходной.

#include algorithm

#include vector

#include iterator

#include iostream.h

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

0 1 1 3 5 8 13

сдвиг массива влево на 1:

1 1 3 5 8 13 13

сдвиг вектора влево на 2:

1 3 5 8 13 8 13

*/

int main()

{

int ia[] = { 0, 1, 1, 3, 5, 8, 13 };

vector int, allocator vec( ia, ia+7 );

ostream_iterator int ofile( cout, " " );

cout "исходная последовательность элементов:\n";

copy( vec.begin(), vec.end(), ofile ); cout '\n';

// сдвиг влево на один элемент

copy( ia+1, ia+7, ia );

cout "сдвиг массива влево на 1:\n";

copy( ia, ia+7, ofile ); cout '\n';

// сдвиг влево на два элемента

copy( vec.begin()+2, vec.end(), vec.begin() );

cout "сдвиг вектора влево на 2:\n";

copy( vec.begin(), vec.end(), ofile ); cout '\n';

}

<p>Алгоритм copy_backward()</p>

template class BidirectionalIterator1,

class BidirectionalIterator2

BidirectionalIterator2

copy_backward( BidirectionalIterator1 first,

BidirectionalIterator1 last1,

BidirectionalIterator2 last2 )

copy_backward() ведет себя так же, как copy(), только элементы копируются в обратном порядке: копирование начинается с last1-1 и продолжается до first. Кроме того, элементы помещаются в целевой контейнер с конца, от позиции last2-1, пока не будет скопировано last1-first элементов.

Например, если дана последовательность {0,1,2,3,4,5}, мы можем скопировать последние три элемента (3,4,5) на место первых трех (0,1,2), установив first равным адресу значения 0, last1 - адресу значения 3, а last2 - адресу значения 5. Тогда элемент 5 попадает на место элемента 2, элемент 4 - на место 1, а элемент 3 - на место 0. В результате получим последовательность {3,4,5,3,4,5}.

#include algorithm

#include vector

#include iterator

#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;

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

исходный список строк:

The light untonsured hair grained and hued like

pale oak

после copy_backward( begin+1, end-3, end ):

The light untonsured hair light untonsured hair grained

and hued

*/

int main()

{

string sa[] = {

"The", "light", "untonsured", "hair",

"grained", "and", "hued", "like", "pale", "oak" };

vector string, allocator svec( sa, sa+10 );

cout "исходный список строк:\n\t";

for_each( svec.begin(), svec.end(), print_elements() );

cout "\n\n";

copy_backward( svec.begin()+1, svec.end()-3, svec.end() );

print_elements::reset_line_cnt();

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных