Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
11.02.2015, 20:45

Сортировка вектора структур

11.02.2015, 20:45. Просмотров 882. Ответов 3
Метки (Все метки)

Ответ

функтор - указатель на функцию или объект, у которого переопределен оператор ()
вся ваша сортировка основана на операции > (while (j >= 0 && arr[j] > arr[j + step]));
допустим сортируются инты.
вы же можете написать вместо явного сравнения интов вызов функции, которая
будет это делать:

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
// вот у вас есть такая функция
void MyComparison(int lhs, int rhs)
{
   return lhs > rhs;
}
 
 
//и вот вы в своей сортировки вместо явного сравнения воткнули вызов
//этой функции
...
while (j >= 0 && MyComparison(arr[j], arr[j + step]))
...
 
 
 
// но т.к.  у вас сравниваться должны структуры по какому-то полю,
// для этого случая нужно написать функцию, которая принимает
// не инты, а эти структуры и сравнивает их нужным вам способом
// (по какому-то полю)
// вот у вас есть такая функция
void MyComparison(myStruct lhs, myStruct rhs)
{
   return lhs.someField > rhs.someField;
}
 
 
// код сравнения остался такой же, как и  в случае с интами.
// для срванения вызывается какая-то функция.
...
while (j >= 0 && MyComparison(arr[j], arr[j + step]))
...
в обоих случаях вызывается какая-то функция сравнения. чтобы это работало
в shellSort нужно передать указатель на функцию или лямбду или что-то похожее,
к чему можно применить оператор скобки передавая в них параметры (вот
указатель на функцию, лямбда и другие вещи - это все называют функтором).

Вернуться к обсуждению:
Сортировка вектора структур
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 20:45
Готовые ответы и решения:

Сортировка вектора структур
Привет всем! Почему это не сортируется? Или как это правильно отсортировать? ...

Сортировка вектора структур за алфавитом
Разработать программу , которая выделяет все слова, встречающиеся в текстовом...

Сортировка массива(вектора)структур по одному полю
Код:#include <iostream> #include <sstream> #include <vector> #include...

Сортировка массива (вектора) структур по заданному полю
Нужно отсортировать массив по полю структуры. Все поля типа string. struct...

Блочная сортировка структур (Отсортировать массив структур по фамилии)
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно...

3
Другие темы раздела
C++ Условный оператор - анализ введенного числа http://www.cyberforum.ru/cpp-beginners/thread1372925.html
Скажите что я делаю не так? #include <cstdlib> #include <iostream> using namespace std; int main() { int a;
C++ Как определить синтаксис введенного текста Суть задания такова: пользователь вводит определенный текст, а программа должна определить, отвечает ли введенный текст синтаксису одного из циклов в языке С++ Пожалуйста, поясните, как это можно... http://www.cyberforum.ru/cpp-beginners/thread1372920.html
Открытие файла по названию, введённому с клавиатуры C++
char name,str; printf("Введите название файла: "); scanf_s("%s", &name); FILE *in; in = fopen("C:\\text\\{name}","r");помогите прописать переменную в путь файла, на форумах вычитал только это,...
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p. помогите сделать на с++
C++ Работа с SQLite http://www.cyberforum.ru/cpp-beginners/thread1372870.html
Хочу начать работать с SQLite, вот попробовал, но появилась ошибка, подскажите в чем проблема и как исправить, или посоветуйте другие библиотеки #include "C:\sqlite3.h" #include <windows.h> ...
C++ Как написать класс "массив" написать класс "массив" В нем реализовать методы: конструкторы (по умолчанию, с параметрами, копирования), ввод с клавиатуры, поиск элемента по ключу, вывод на экран и т.д. подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru