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

Лабы / var09 my / 05

.cpp
Скачиваний:
25
Добавлен:
30.04.2013
Размер:
1.36 Кб
Скачать
#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();
}
Соседние файлы в папке var09 my