Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 1 год назад.
Есть массив, в которым храниться данные о геометрических фигур, и именно: код фигуры , цвет , материал фигуры , объем , площадь поверхности и радиус . Нужно отсортировать по площади поверхности и цвету. Например , я создал 6 фигур ( 2 красных , 2 желтых , 2 зеленых ) , сначала нужно спросить какой цвет нас интересует ( например желтый ) , и программа должно отсортировать те фигуры только желтого цвета.
struct
figuri{ char kod[5];
char tvet [15];
char material[15];
float r,plosiadi,obiem;
} sf[100],
Подскажите пожалуйста как это сделать
Один из возможных способов - предоставить кастомный компаратор (функцию сравнения) и использовать его со стандартным алгоритмом std::sort
. Например, так:
std::vector<Fig> figs = // заполняем контейнер фигурами
std::sort(figs.begin(), figs.end(), [](const Fig& l, const Fig& r) {
return std::tie(l.one, l.two) < std::tie(r.one, r.two); }
При этом стоит иметь в виду, что для полей one
и two
должен быть предоставлен корректный оператор меньше <
, поэтому, во избежании неожиданного поведения проще всего сишные строки заменить на std::string
, или же добавить временные переменные внутри компаратора. Пример для one
типа const char*
или массива char
(а-ля сишная строка):
std::sort(figs.begin(), figs.end(), [](const Fig& l, const Fig& r) {
std::string ls = l.one;
std::string rs = r.one;
return std::tie(ls, l.two) < std::tie(rs, r.two); }
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
При хешировании с цепочками списки элементов с данным хеш-значением будут упорядоченнымиКак этот подход повлияет на стоимость успешного...
Использую стороннюю библиотеку, из которой периодически идёт обращение на их сервер с целью обновленияКак запретить? СВОЕЙ ПРОГРАММЕ любой...