Ассоциативные массивы: map




По умолчанию данные в списках сортируются по ключу по возрастанию, часто бывает, что этот порядок сортировки нужно изменить.
Для этого можно написать компаратор, который будет располагать данные, так как вы укажите.

Пример компаратора, который сортирует по убыванию ключа (пишется перед main):

struct cmp
{
	bool operator()(const string &a, const string &b) const
	{
		return a > b;
	}
};

и используется при создании списка:

map<string, int, cmp> mymap;

Task
Построить алфавитно-частотный словарь: список слов в алфавитном порядке, справа от каждого слова должно быть указано, сколько раз оно встречается в исходном файле. Признаком окончания текста является "END!". Список должен быть отсортированный по ключу в лексикографическом порядке по убыванию.

Ввод Вывод
один
два
один
три
два
один
END!
три 1
один 3
два 2
 
C++
Write a program below
#include<iostream>	
#include <map>
#include<string>
using namespace std;
struct cmp
{
	

      
};

int main() {

	map<string, int, cmp> mymap;
	string s;
	while (!cin.eof())
	{
		cin >> s;
		if (s == "END!")  break;
		mymap[s]++;

	}
	map<string, int>::iterator it;

	for (it = mymap.begin(); it != mymap.end(); ++it)
	cout <<  it->first << " " << it->second << "\n";
	

	return 0;
}

      
Your last submission is saved in the editor window.
     

Results:

All results: