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

HOWTO: сортировка массива структур по произвольному полю - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Быстрая сортировка http://www.cyberforum.ru/cpp-beginners/thread920432.html
Помогите, пожалуйста! Не понимаю почему, но при использовании быстрой сортировки программа выдаёт ошибку и не работает. Вообще первый раз её использую... #include <string> #include <iostream>...
C++ Чтение из файла Всем привет . У меня возникла небольшая проблема . int main(int argc, char* argv) { FILE * ptr ; unsigned char ch; if ((ptr=fopen("text3.txt", "r"))!=NULL) ... http://www.cyberforum.ru/cpp-beginners/thread920419.html
C++ Dev C++ выдает непонятную ошибку
Вот код программы: #include <iostream> using namespace std; int main() { cout<<"Hello world\n"; return 0; } Вот ошибка: cannot find -lbgi
C++ Не работают функции <math.h> в методе (функции-члене)
Сделал программу которая решает по формуле задачу. Все работает, но стоило вынести нахождение y в функцию, как компилятор стал писать ошибки! код, ошибки и скриншот #include "stdafx.h" #include...
C++ Алгоритм проверки числа на "совершенность" http://www.cyberforum.ru/cpp-beginners/thread920384.html
Приветствую всех! Прошу помочь со следующей задачей: "Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением себя самого. Число 6 – совершенное, так...
C++ Массивы и перестановка Помогите пожалуйста с задачей. Дано 2 массива, заполненных случайными числами, размером от 10-20 (рандом). Найти в первом массиве максимальное число и все числа, находящиеся до него записать в 3ий... подробнее

Показать сообщение отдельно
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375

HOWTO: сортировка массива структур по произвольному полю - C++

09.07.2013, 18:53. Просмотров 1010. Ответов 16
Метки (Все метки)

Вот тут товарищ навел на размышления, а как же собственно сортировать по произвольному полю?
C++
1
2
3
4
5
struct myStruct{
    int m1;
    string m2;
    //etc...
};
мне представляется такой вариант поле для сравнения определяется предварительной установкой параметра fobj:
C++
1
2
3
4
vector<myStruct> v;
Compare fobj;
fobj.opt = 1;// <---???
sort(v.begin(),v.end(),fobj);
где предикат:
C++
1
2
3
4
5
6
7
8
9
10
struct Compare:public binary_function<myStruct&,myStruct&, bool >{
        int opt;    
        bool operator()(const myStruct &a,const myStruct &b ) {
            switch(opt){
                case 1:{ return a.m1 < b.m1; break;}
                case 2:{ return a.m2 < b.m2; break;}
                //etc...
            }
        }
};
Это выглядит несколько ущербно, к тому же при большом количестве полей для каждого нужно будет описывать однообразные операции.
Как сделать лучше (или может я вообще не в ту сторону смотрю) ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru