Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / var09 my / 05

.doc
Скачиваний:
26
Добавлен:
30.04.2013
Размер:
26.11 Кб
Скачать

Лабораторная работа №5

Востропятов Н. А.

Вар №9

Простой однонаправленный упорядоченный по возрастанию.

Из списка s1 образовать список s2, в котором из элементов в s1, имеющих одинаковое содержимое, присутствует только один.

#include <stdio.h>

#include <conio.h>

#include <vector>

#include <algorithm>

#include <functional>

class Element

{

public:

Element(void) { data = 0; }

Element(int value) { data = value; }

Element(Element *a, Element &src) { a->data = src.data; }

~Element(void) { data = 0; }

int GetData(void) { return data; }

void SetData(int value) { data = value; }

inline Element operator=(const Element &a) { data = a.data; return data; }

private:

int data;

};

int compare(Element e1, Element e2)

{

if (e1.GetData() < e2.GetData())

return true;

return false;

}

void main()

{

std::vector<Element> s1;

std::vector<Element> s2;

std::vector<Element>::iterator iter;

for (int i=0; i < 8; i++)

{

if (i==4 || i==6)

s1.push_back(Element(i));

s1.push_back(Element(i));

}

std::stable_sort(s1.begin(), s1.end(), compare);

printf("\nS1:\n");

for (iter = s1.begin(); iter < s1.end(); iter++)

printf("Element: %d\n", iter->GetData());

getch();

// this algorithm is accepable only for sorted containers!

for (iter = s1.begin(); iter < s1.end(); iter++)

{

if (!(iter+1) || (iter+1)->GetData() != iter->GetData())

s2.push_back(Element(*iter));

}

printf("\nS2:\n");

for (iter = s2.begin(); iter < s2.end(); iter++)

printf("Element: %d\n", iter->GetData());

getch();

}

2

Соседние файлы в папке var09 my