Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2011, 18:09   #1
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию Сортировка массива/вектора строк

Есть ли в C++ что нибудь такое хитрое, что б сортировать массив/вектор строк по количеству повторений?
Ну например
Цитата:
Ваня
Саша
Кирилл
Саша
Саша
На выходе
Цитата:
Саша
Саша
Саша
Ваня
Кирилл
Или
Цитата:
Саша
Ваня
Кирилл
Если нет, как это можно делать наилучшим образом?
boomeer вне форума Ответить с цитированием
Старый 11.04.2011, 18:22   #2
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Est' funkciuya strcmp(string1,string2);. Esli ona vozwrashyaet 0 to string1 = string2.
if(!strcmp(string1,string2))
{
N_string1++;
}
Potom mojno vivesti na ekran strochki po ubivaniu.
Izvinyaus' chto napisal angliskimi bukvimi.
Акоб вне форума Ответить с цитированием
Старый 11.04.2011, 18:42   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2boomeer
кидаешь в vector<int> кол-во повторений, и их сортируешь. можно вкупе с map-ом
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 11.04.2011, 19:18   #4
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Совет с SO

Цитата:
There's no built-in way to do this. A relatively simple way is to build a map<string, size_t> containing the counts of each element (just iterate over your input vector, incrementing the count for each string you see). Then write all the keys in the map to a vector, and std::sort that vector with a comparator that compares the number from the map.

That involves more map lookups than strictly necessary, so you could instead write a vector of pairs from the map, then sort the pairs, and finally create your vector of strings from the sorted pairs.
Кто может это перевести на понятный русский?
(А еще лучше на код :D Я его лучше понимаю)
boomeer вне форума Ответить с цитированием
Старый 11.04.2011, 19:32   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,725
По умолчанию

То что вам и предлагали. Делаете меп (можно структуру) и его сортируете стандартной функцией.
p51x вне форума Ответить с цитированием
Старый 11.04.2011, 19:42   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2p51x
map нельзя пересортировать, это ассоциативный контейнер, отсортированный по ключу. в данной задаче его можно использовать только в качестве счетчика слов. дальше кол-во слов нужно перегнать в вектор с элементами либо структурой, либо pair (колво и ссылка на строку), и отсортировать вектор по колву слов
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива строк. daruwanov Общие вопросы C/C++ 6 21.09.2010 19:57
сортировка массива строк в Си SpLIne Общие вопросы C/C++ 2 15.04.2010 16:17
Сортировка строк двухмерного массива EfiopianDIMON Общие вопросы C/C++ 9 26.05.2009 22:52
Сортировка строк 2-мерного массива Mayday_007 Помощь студентам 1 04.04.2008 09:26
Сортировка массива строк StanPBH Помощь студентам 9 24.04.2007 00:34