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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Быстрая сортировка http://www.cyberforum.ru/cpp-beginners/thread920432.html
Помогите, пожалуйста! Не понимаю почему, но при использовании быстрой сортировки программа выдаёт ошибку и не работает. Вообще первый раз её использую... #include <string> #include <iostream> #include <fstream> using namespace std; struct pupils {
C++ Чтение из файла Всем привет . У меня возникла небольшая проблема . int main(int argc, char* argv) { FILE * ptr ; unsigned char ch; if ((ptr=fopen("text3.txt", "r"))!=NULL) { ch = getc(ptr) ; while (!feof(ptr)) 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 <iostream> #include <conio.h> #include <math.h> using namespace std; double yCacl(int x){
C++ Алгоритм проверки числа на "совершенность" http://www.cyberforum.ru/cpp-beginners/thread920384.html
Приветствую всех! Прошу помочь со следующей задачей: "Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением себя самого. Число 6 – совершенное, так как 6 = 1+2+3. Число 8 – не совершенное, так как 8 ≠ 1+2+4.Дано натуральное число n. Получить все совершенные числа, меньшие n." Задачу я решил (код ниже), но работает программа слишком медленно....
C++ Массивы и перестановка Помогите пожалуйста с задачей. Дано 2 массива, заполненных случайными числами, размером от 10-20 (рандом). Найти в первом массиве максимальное число и все числа, находящиеся до него записать в 3ий массив. Во втором массиве найти максимальное число и все числа после него записать в 3ий массив (т.е. переместить к тому что получили из 1ого массива). Заранее спасибо! подробнее

Показать сообщение отдельно
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
09.07.2013, 18:53     HOWTO: сортировка массива структур по произвольному полю
Вот тут товарищ навел на размышления, а как же собственно сортировать по произвольному полю?
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...
            }
        }
};
Это выглядит несколько ущербно, к тому же при большом количестве полей для каждого нужно будет описывать однообразные операции.
Как сделать лучше (или может я вообще не в ту сторону смотрю) ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru