Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Return 0;. Алгоритм copy при таком использовании, как в этом примере, работает в режиме замещения



}

Алгоритм copy при таком использовании, как в этом примере, работает в режиме замещения. Это означает, что 1 -й элемент контейнера-источника замещает 1 -й элемент контейнера-приемника.

Однако этот же алгоритм может работать и в режиме вставки, если в качестве третьего аргумента использовать так называемый итератор вставки.

Итераторы вставки front_inserter(), back_inserter(), inserter() предназначены для добавления новых элементов в начало, конец или произвольное место контейнера.

Покажем использование этих итераторов на следующем примере.

int main() {

int а[4] = {40, 30, 20, 10};

vector<int> va(a, a + 4);

int b[3] = {80, 90, 100};

vector<int> vb(b, b + 3);

int c[3] = {50, 60, 70};

vector<int> vc(c, с + 3);

list<int> L; // пустой список

Copy(va.begin(), va.end(), front_inserter(L));

Print(L);

Copy(vb.begin(), vb.end(), back_inserter(L));

Print(L);

list<int>::iterator from = L.begin();

Advance(from, 4);

Copy(vc.begin(), vc.end(), inserter(L, from));

Print(L);

Return 0;

}

Результат выполнения программы:

10 20 30 40

10 20 30 40 80 90 100

10 20 30 40 50 60 70 80 90 100

Обратите внимание на следующие моменты:

Первый вызов функции сору осуществляет копирование (вставку) вектора va в список L, причем итератор вставки front_inserter обеспечивает размещение очередного элемента вектора va в начале списка — поэтому порядок элементов в списке изменяется на обратный.

Второй вызов сору пересылает элементы вектора vb в конец списка L благодаря итератору вставки back_inserter, поэтому порядок копируемых элементов не меняется.

Третий вызов сору копирует вектор vc в заданное итератором from место списка L, а именно после четвертого элемента списка. Чтобы определить нужное значение итератора from, мы предварительно устанавливаем его в начало списка, а затем обеспечиваем приращение на 4 — вызовом функции advance().





Дата публикования: 2014-11-28; Прочитано: 209 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...