написати обєкт-функцію, яку передавати у функцію сортування
хай пояснить той, хто більше знає, бо я давно вже не писав того
я б зробив Клас свій із перевизначеним оператором < і сортував би обєкти цього класу, а вже там всередині того оператора можна зхитрити і сортувати вже те, що тобі потрібно
Повідомлень: 151 Звідки: Lviv NU FAMI Зареєстрований: 30.04.06
Опубліковано 30-03-2010 11:43
Особисто я не знаю такого способу.
В таких випадках роблять структурки, в яких зберігають всі потрібні данні, а оператор порівняння роблять по потрібному ключу.
А ще якщо мені потрібно посортувати два масиви де елементи першого масиву є першим ключем, а елементи другого - другим ключем(тобто порівнюються тоді, коли ключі однакові), або ж просто треба посортувати перший, і попереставляти відповідно елементи другого масиву, то я роблю це наступним чином. Спочатку створюю новий масив і заповнюю його наступним чином ind[i] = i; тоді сортую його елементи, передаючи оператор порівняння, який порівнює елементи масивів. Правда після такого сортування трішки складніше буде доступатись a[ind[i]].
Наприклад.
...
double angle[nmax]
double distance[nmax];
const double eps = 1e-7;
class cmp
{
public:
bool operator()(const int i1, const int i2)
{
if (fabs(angle[i1] - angle[i2]) < eps)
{
return d[i1] > d[i2];
}
return angle[i1] < angle[i2];
}
};