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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
#1

Алгоритм сортировки для вектора - C++

02.02.2014, 21:45. Просмотров 588. Ответов 10
Метки нет (Все метки)

Ребята у меня есть структура типа:
C++
1
2
3
4
5
6
7
struct Set
{
    int row;    //строка в матрице
    int value;  //значение, которое повторяется
    int count; //количество повторений значения
    ...
};
Это структура для хранения повторяющихся значений в строке матрицы.
Я хочу отсортировать весь вектор данных значений по полю count.
Подскажите алгоритм из STL или boost для сортировки. А то через for уже не хочется
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 21:45     Алгоритм сортировки для вектора
Посмотрите здесь:

Реализуйте алгоритм сортировки для массива, содержащего указатели на объекты-множества целых чисел - C++
Помогите сделать лабу, Я даже не знаю с чего начинать. Пользователь вводит в программу текст произвольной длины, завершая ввод...

Как возможно реализовать алгоритм сортировки "выбором" для строк матрицы? - C++
Допустим мне дана динамическая матрица размерностью n на m, и надо отсортировать строки между собой по сумме их элементов. вот такую...

Функция сортировки вектора и списка - C++
Добрый день, помогите пожалуйста) Суть задания в том, что нужно написать функцию сортировки (Одну!) сразу для вектора и списка без...

Алгоритм сортировки - C++
Здравствуйте, подскажите пожалуйста какой алгоритм можно использовать при решении такой задачи: Дана строка char * из букв и цифр...

Алгоритм сортировки - C++
учитель попросил написать сортировку массива по возрастанию в общем виде #include <stdio.h> #include <string.h> int main() { ...

Алгоритм сортировки - C++
пацаны ребята помогите, реализовал два алгоритма на C++, алгоритм сортировки пирамидальный(кучей) и быстрой сортировки, все они сортируют...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
02.02.2014, 22:20     Алгоритм сортировки для вектора #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Suares, Вы можете имплементировать свою функцию сравнения и использовать sort
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
02.02.2014, 22:50     Алгоритм сортировки для вектора #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
Вы можете имплементировать свою функцию сравнения
во у Вас и термины, может проще сказать "ввести предикат"?
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
02.02.2014, 22:56     Алгоритм сортировки для вектора #4
Цитата Сообщение от abit Посмотреть сообщение
во у Вас и термины, может проще сказать "ввести предикат"?
имплеменировать функцию-предикат. Что Вас не устраивает?
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
02.02.2014, 23:05     Алгоритм сортировки для вектора #5
Цитата Сообщение от metaluga145 Посмотреть сообщение
имплеменировать функцию-предикат. Что Вас не устраивает?
да это мой страный юмор был, в общем для "имплементации" в программировании есть русское слово "реализовывать", да собственно оно тут лесом, если просто освоить понятие предиката, в STL и ООП предикат нужная вещь
metaluga145
02.02.2014, 23:10
  #6

Не по теме:

Цитата Сообщение от abit Посмотреть сообщение
"имплементации" в программировании есть русское слово "реализовывать"
учитывая где я учусь, мне вообще сложно выражать какие-то программистские термины на русском(даже указатель мне легче заменить на поинтер). так что уж простите.

gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
02.02.2014, 23:19     Алгоритм сортировки для вектора #7
Можно использовать boost::bind:
C++
1
2
3
4
5
6
7
#include <boost/bind.hpp>
#include <boost/range/algorithm/sort.hpp>
 
// ...
 
using namespace boost::placeholders;
boost::sort(vector, boost::bind(&Set::count, _1) < boost::bind(&Set::count, _2));
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
02.02.2014, 23:27     Алгоритм сортировки для вектора #8
gray_fox, можно, кст, просто перегрузить оператор сравнения для структуры. вроде бы то же самое будет, или нет?
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
02.02.2014, 23:31     Алгоритм сортировки для вектора #9
metaluga145, можно, но так стоит делать, если только объекты класса действительно так "сравниваются", а не потому что "что бы вот здесь по такому полю отсортировать".
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
04.02.2014, 20:16  [ТС]     Алгоритм сортировки для вектора #10
Цитата Сообщение от gray_fox Посмотреть сообщение
Можно использовать boost::bind:
А можно ли таким образом отсортировать тип std::map?
Вот у меня есть такая таблица:
C++
1
2
typedef std::map<std::string, std::string> Row; // first - title of column, second - value of column 
typedef std::map<int, Row> Table; // first - number of row
И я хочу отсортировать значения по любому столцу. т. е. если у меня в 1ом столбце 1ой строки значение больше чем в 1ом столбце 2ой строки, то меняем между собой строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 21:07     Алгоритм сортировки для вектора
Еще ссылки по теме:

Алгоритм сортировки - C++
Дан одномерный масив. мне в нем нужно отсортировать по возростанию только те числа масива которые простые, а остальные оставить на той...

Почему стандартная сортировка вектора std::sort намного быстрее сортировки вставками/пузырьком? - C++
Здравствуйте, объясните, пожалуйста, как реализована std::sort. Ясно, что через итераторы, но почему такой сильный выигрыш во времени (1.4...

Комбинированый алгоритм сортировки - C++
Нужно написать програму на языке С когда имеется алгоритм ! Задача в слудуещем: сортировка масива с N- разных чисел, используя не более N+2...

Алгоритм сортировки вставками - C++
Привет, всем! В алгоритме непонятна одна строчка: #include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
04.02.2014, 21:07     Алгоритм сортировки для вектора #11
Suares, map уже отсортирован согласно ключу, ключ в паре ключ\значение неизменяем, да и алгоритм sort требует итераторы с произвольным доступом, так что не получиться, если только самому сортировку писать.
Не знаю правда, зачем таблицу таким образом представлять, но это уже другой вопрос)

Добавлено через 34 минуты
Т.е. думаю можно написать сортировку, которая будет работать с двунаправленными итераторами, потом что-нибудь вроде
C++
1
my_sort(table | boost::adaptors::map_values, boost::bind(&Row::first, _1) < boost::bind(&Row::first, _2));
Yandex
Объявления
04.02.2014, 21:07     Алгоритм сортировки для вектора
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru