Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 5
1

Шаблон функции, использующий поля структуры

09.01.2015, 22:10. Показов 912. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В очередной раз у меня возникают проблемы с доступом к полям структуры, и на этот раз уже в функции. У меня есть две (ну, на самом деле больше, но сути это не меняет) функции быстрой сортировки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void quickSort_year(int left, int right) 
{
    int i = left, j = right;
    Video tmp;
    int pivot = salon[(left + right) / 2].year;
    while (i <= j) 
    {
        while (salon[i].year < pivot) i++;
        while (salon[j].year > pivot) j--;
        if (i <= j)
        {
            tmp = salon[i];
            salon[i] = salon[j];
            salon[j] = tmp;
            i++;
            j--;
        }
    };
    if (left < j)
    quickSort_year(left, j);
    if (i < right)
    quickSort_year(i, right);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void quickSort_numb(int left, int right) 
{
    int i = left, j = right;
    Video tmp;
    int pivot = salon[(left + right) / 2].numb;
    while (i <= j) 
    {
        while (salon[i].numb < pivot) i++;
        while (salon[j].numb > pivot) j--;
        if (i <= j)
        {
            tmp = salon[i];
            salon[i] = salon[j];
            salon[j] = tmp;
            i++;
            j--;
        }
    };
    if (left < j)
    quickSort_numb(left, j);
    if (i < right)
    quickSort_numb(i, right);
}
Массив структур salon - глобальный, если что.
Функции за исключением названий и используемого поля практически идентичны, но я не знаю, как сделать из этого шаблон или хотя бы функцию, которая принимала бы структуру и поле, по которому пошла бы сортировка. Гугл мне не помог, а перечитывать учебник по шаблонам, в которых я мало что понимаю, времени уже маловато. Есть ли способ сократить количество кода до одной универсальной функции, или для сортировки по каждому отдельному полю придется делать ещё одну новую функцию, почти идентичную остальным?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2015, 22:10
Ответы с готовыми решениями:

error C2448: factor: вероятно, инициализатор, использующий стиль функции, является определением функции
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int main(){//...

Структура (значение поля структуры приравнять к значению функции)
Можно ли значение поля структуры приравнять к значению функции вот так STUD1.SES=COR(); Делаю...

Шаблон структуры
можно ли в с++ создать шаблон структуры? Не класса, именно структуры. Т.е. есть у меня struct A...

Шаблон структуры
Создать шаблон структуры &quot;владелец автомобиля&quot; со следующими полями : фамилия, имя, номер...

1
71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
09.01.2015, 22:38 2
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
void quickSort_numb(int left, int right, int FlagSort) 
{
    int i = left, j = right;
    Video tmp;
if(FlagSort==0) { int pivot = salon[(left + right) / 2].year;}
else                  {int pivot = salon[(left + right) / 2].numb}
    while (i <= j) 
    {
       if(FlagSort==0) 
         {
           while (salon[i].numb < pivot) i++;
           while (salon[j].numb > pivot) j--;
           }
        else 
          {
            while (salon[i].year < pivot) i++;
            while (salon[j].year > pivot) j--;
          }
        if (i <= j)
        {
            tmp = salon[i];
            salon[i] = salon[j];
            salon[j] = tmp;
            i++;
            j--;
        }
    };
    if (left < j)
    quickSort_numb(left, j);
    if (i < right)
    quickSort_numb(i, right);
}

Пожалуй, самый примитивный и ленивый вариант.

Добавлено через 1 минуту
Большой минус заключается в проверках при каждом повторении цикла.
1
09.01.2015, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2015, 22:38
Помогаю со студенческими работами здесь

Шаблон структуры
Как можно заполнить данную структуру вручную? Приведите пожалуйста простенький пример.. template...

Шаблон структуры данных
Шаблон структуры данных – двухуровневый массив указателей на объекты. Массив верхнего уровня –...

Шаблон структуры данных
Задание на курсовую работу: шаблон структуры данных – массив указателей на заголовки списков....

Шаблон структуры данных
Всем привет, в универе дали задание, не понимаю совсем, напишите пожалуйста, Разработать шаблоны...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru