Шаг 12.
Библиотека STL.
Объединение одного списка с другим

    На этом шаге мы рассмотрим пример объединения двух списков.

    В следующем примере выполняется слияние двух списков с помощью функции-члена merge().

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

#include <vcl.h>
#include <iostream>
#include <list>
#include <winuser.h>
#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;
}

int main(int argc, char* argv[])
{
  list<int> lst1, lst2;
  int i;
  for(i=0; i<20; i+=2) lst1.push_back(i);
  for(i=1; i<19; i+=2) lst2.push_back(i);

  cout << ToRus("Содержимое списка lst1: ");
  list<int>::iterator p = lst1.begin();
  while(p != lst1.end())
  {
  	cout << *p<<" ";
  	p++;
  }
  cout << endl << endl;

  cout << ToRus("Содержимое списка lst2: ");
  p = lst2.begin();
  while(p != lst2.end())
  {
  	cout << *p <<" ";
  	p++;
  }
  cout << endl << endl;

  // Объединение списков
  lst1.merge(lst2);
  if(lst2.empty())
  	cout << ToRus("Список lst2 теперь пуст.\n");
  cout << ToRus("Содержимое lst1 после объединения:\n");
  p = lst1.begin();
  while(p != lst1.end())
  {
  	cout << *p<<" ";
  	p++;
  }

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

    Результаты выполнения этой программы представлены на рисунке 1.


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

    На следующем шаге мы рассмотрим пример хранения в списке объектов класса.




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