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

Сортировка, не изменяя структуру - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана последовательность чисел. Выяснить , сколько раз в ней встречается максимальное число. http://www.cyberforum.ru/cpp-beginners/thread561961.html
Дана последовательность чисел. Выяснить , сколько раз в ней встречается максимальное число.
C++ Структура TRAIN(считывание из файла) Знаю что много тем на эту структуру TRAIN, но я не нашел именно эту программу.(помогите доработать эту программу) Нужно: В файле содержится информация о железнодорожном расписании (номер поезда,... http://www.cyberforum.ru/cpp-beginners/thread561948.html
C++ Массив: вставить число k вводимое с клавиатуры после первого отрицательного элемента двумерного массива
нужно втавить число k вводимое с клавиатуры после первого отрицательного элемента двумерного массива.Учусть ситуацию если один отрицательный элемент или нет вообще отрицат элементов вот помогите...
C++ программа, которая считывает текст из файла
Написать программу, которая считывает текст из файла и выводит на экран толь* ко предложения, содержащие заданное с клавиатуры слово. #include <iostream> #include <fstream> #include...
C++ Описать и вывести массив http://www.cyberforum.ru/cpp-beginners/thread561916.html
Описать и вывести массив, содержащий 10 записей следующей структуры: фамилия, возраст, № студенческого билета, средняя оценка за последнюю сессию Вывести массив в табличном виде. выдает ошибку и...
C++ Написать программу для вычисления площади выпуклого Написать программу для вычисления площади выпуклого четырехугольника ABCD, заданного длинами сторон AB, BC, CD, DA и диагональю АС. Диагональ делит четырехугольник на два треугольника площадь каждого... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
30.04.2012, 12:43
Цитата Сообщение от nake Посмотреть сообщение
а потом как упорядочить элементы массива, если мне нужно их упорядочить исходя из элементов структуры?
Либо самостоятельно написать процедуру сортировки, которая сортирует порядковые номера, сравнивая исходные данные под этими номерами, либо воспользоваться стандартным std::sort с собственным предикатом сравнения. Второе проще, но требует определённых знаний:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Struct {
    int foo;
    float bar;  // Сортировка производится по этому полю
    friend operator << (std::ostream&, const Struct&);  // стандартный вывод
};
 
std::vector<size_t> sortIndex(const std::vector<Struct>& array)
{
    std::vector<size_t> index(array.size());  // вектор порядковых номеров имеет тот же размер, что и массив
    std::iota(index.begin(), index.end(), 0);  // заполнение порядковыми номерами
    std::sort(index.begin(), index.end(), [&array] (size_t idx1, size_t idx2) {return array[idx1].bar < array[idx2].bar;});
    return index;
}
 
void PrintSortedArray(const std::vector<Struct>& array)  // Распечатать упорядоченный массив
{
    const std::vector<size_t> index = sortIndex(array);
    std::for_each(index.begin(), index.end(), [&array] (size_t idx) -> void {std::cout << idx << " - " << array[idx] << std::endl;});
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru