Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
#1

Сортировка - C++

01.12.2010, 18:21. Просмотров 274. Ответов 0
Метки нет (Все метки)

Стало интересно. Возможно-ли отсортировать вектор элементов своего типа стандартным алгоритмом std::sort. При этом, класс абстрактный, сортируется массив объектов абстрактного класса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//Figure.h
#pragma once
 
class Figure
{
public:
    Figure() { }
    virtual ~Figure() { }
    virtual double GetSquare()=0;
    virtual bool operator <(Figure* Obj)=0;
};
 
class Square:public Figure
{
public:
    Square(int a_):a(a_) { }
    ~Square() { }
    double GetSquare()
    {
        return a*a;
    }
    bool operator <(Figure* Obj)
    {
        return GetSquare() < Obj->GetSquare();
    }
private:
    int a;
};
 
class Triangle:public Figure
{
public:
    Triangle(int a_):a(a_) { }
    ~Triangle() { }
    double GetSquare()
    {
        return (a*a)/2;
    }
    bool operator <(Figure* Obj)
    {
        return GetSquare() < Obj->GetSquare();
    }
private:
    int a;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Figure.cpp
#include "Aa.h"
 
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    const int n=5;
    std::vector<Figure*> VecFig(n);
    Triangle Ob1(5);
    Square Ob2(10);
    Triangle Ob3(6);
    Square Ob4(15);
    Triangle Ob5(10);
    VecFig[0]=&Ob1;
    VecFig[1]=&Ob2;
    VecFig[2]=&Ob3;
    VecFig[3]=&Ob4;
    VecFig[4]=&Ob5;
    for(size_t i=0; i<VecFig.size(); ++i)
        std::cout<<VecFig[i]->GetSquare()<<' ';
    std::cout<<'\n';
    std::sort(VecFig.begin(), VecFig.end());
    for(size_t i=0; i<VecFig.size(); ++i)
        std::cout<<VecFig[i]->GetSquare()<<' ';
    std::cout<<'\n';
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 18:21     Сортировка
Посмотрите здесь:

Внешняя сортировка(сортировка последовательностей)Не работает - Алгоритмы
Вот начал смотреть прямое слияние. А она не выдает желаемых результатов. Вот последовательность к примеру 10,12,9,3,11,1, если брать...

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - C#
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» - Pascal
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка - Prolog
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением - Pascal
1)В заданном массиве К(N) найти индексы элементов, которые кратны минимальному значению элемента массива. 2)Задан массив AX (N). Добавить...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка) - Turbo Pascal
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод обменная сортировка). Или хотя бы без этого...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Быстрая сортировка, ситуация, при которой сортировка работает не корректно - Turbo Pascal
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x := ar; Repeat While...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Работа с простейшими массивами: 1)сортировка; 2)определение суммы и сортировка - C#
1)Класс описывает одномерный массив, состоящий из n целых элементов со значениями в диапазоне от (0 до 100). Методы класса должны: менять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru