На этом шаге мы рассмотрим небольшой пример использования списков.
В следующем примере стоит обратить особое внимание на применение специальных функций списков.
//--------------------------------------------------------------------------- #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. Результат работы приложения
Со следующего шага мы начнем рассматривать множества и мультимножества.