Консультация № 137028
16.05.2008, 02:16
0.00 руб.
0 1 1
Hi dear experts!!!
вопрос касается stl : [хочу при помощи stl функции sort произвести сортировку. все как бы ок, компилирует нормально, но не потом не хочет работать - ошибка доступа. пробывал третим параметром функцию сравнения, пробывал класс писать и ничего.
но если поставить на сортировку только два элемента, то срабатывает бех ерорав но ничего всезе не сотирует.можетнеправильная передача аргументов в функцию? просто не знаю что делать, перепробвал что мог. напишите плиз работающую прожку сортирующую обьекты класса.

Приложение:
bool fCompareOnNum(CInfo &obj1, CInfo &obj2) { return obj1.fGetNumber()<obj2.fGetNumber();}void main(){// класс CInfo , fGetNumber возращает число по которому //сортируемconst int n=4;CInfo info[n]; sort(info, info+n, fCompareOnNum);}

Обсуждение

Неизвестный
16.05.2008, 03:41
общий
это ответ
Здравствуйте, S@ZaN!
Часть программы, которую вы привели, должна работать без проблем. Возможно проблема находится в классе CInfo, описание которого вы не привели. В приложении программа подобная вашей, только использующая объекты класса string. И если вы решили использовать STL, то от обычных массивов лучше перейти к классу vector. Он гораздо функциональнее и поддерживает практически все алгоритмы из STL.

Приложение:
#include <string>#include <algorithm>#include <iostream>using namespace std;bool string_on_size(const string& s1, const string& s2) { return (s1.size() < s2.size());}int main(int argc, char* argv[]) { const int n = 4; string array[4]; array[0] = "this"; array[1] = "is"; array[2] = "a"; array[3] = "test"; cout << "Initial array:" << endl << endl; for(int i=0; i<n; i++) cout << array[i] << endl; sort(array, array+n, string_on_size); cout << endl << "Sorted array:" << endl << endl; for(int i=0; i<n; i++) cout << array[i] << endl; return 0;}
Форма ответа