Шаг 156.
Библиотека STL.
Контейнеры STL. Операции над списками. Пример использования списков

    На этом шаге мы рассмотрим небольшой пример использования списков.

    В следующем примере стоит обратить особое внимание на применение специальных функций списков.

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <iterator>
#include <list>
#include <algorithm>
#include <conio.h> //необходимо для getch()

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

void printLists (const list<int>& l1, const list<int>& l2) 
{
  cout << "list1: ";
  copy (l1.begin(),l1.end(), ostream_iterator<int>(cout," "));
  cout << endl << "list2: ";
  copy (l2.begin(),l2.end(), ostream_iterator<int>(cout," "));
  cout << endl << endl;
}


int main(int argc, char* argv[])
{
  // Создание двух пустых списков 
  list<int> list1,list2;

  // Заполнение обоих списков элементами 
  for (int i=0; i<6; ++i) {
    list1.push_back(i);
    list2.push_front(i);
  }
  printLists(list1,list2);

  // Вставка всех элементов list1 перед первым элементом
  // со значением 3 в list2
  // - find() возвращает итератор на первый элемент со значением 3
  list2.splice(find(list2.begin(),list2.end(), // Позиция в приемнике
                    3),
               list1); // Источник
  printLists(list1,list2);

  // Перемещение первого элемента в конец
  list2.splice(list2.end(),     // Позиция в приемнике
               list2,           // Источник
               list2.begin());  // Позиция в источнике
  printLists(list1,list2);

  // Сортировка второго списка, присваивание list1
  // и удаление дубликатов
  list2.sort();
  list1 = list2;
  list2.unique();
  printLists(list1,list2);

  // Слияние двух отсортированных списков в первом списке 
  list1.merge(list2); 
  printLists(list1,list2); 

  getch();
  return 0;
}
//---------------------------------------------------------------------------
Текст этого примера можно взять здесь.

    Программа выводит следующий результат:


Рис.1. Результат работы приложения

    Со следующего шага мы начнем рассматривать множества и мультимножества.




Предыдущий шаг Содержание Следующий шаг