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

Сортировка map по значению - C++

Восстановить пароль Регистрация
 
mirumir
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 12
19.04.2016, 12:14     Сортировка map по значению #1
Добрый день
Как можно отсортировать map по возрастанию/убыванию float(неважно ключ это или значение)
Программа- частотный анализ текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <fstream>
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    ofstream fout("1.txt"); // создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt
    std::ifstream file("8.txt", std::ios_base::binary);
    if (!file)
    {
        std::cerr << "can't open file\n";
        return -1;
    }
 
    size_t count[256];
    std::fill_n(count, 256, 0);
    int k = 0, b;
    int a[256];
    char c;
    for (c; file.get(c); ++count[uint8_t(c)])
    {
        k++;
    }
 
    for (size_t i = 0; i < 256; ++i)
    {
        a[i] = count[i];
        if (a[i] && isgraph(i))
        {
 
            map<char, float> test;
            test[(char)i] = (((float)(a[i] + 1) * 100) / k);
 
            for (map<char, float>::const_iterator it = test.begin(); it != test.end(); ++it)
            {
                cout << it->first << " " << it->second << endl;
                fout << it->first << " " << it->second << endl;
            }
        }
 
    }
 
    fout.close();
    system("pause");
}
Вложения
Тип файла: txt 8.txt (15.9 Кб, 1 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
19.04.2016, 12:29     Сортировка map по значению #2
Заведите еще одну map с переставленными float,char и перепишите в нее все пары.
C++
1
2
3
multimap<float,char> test2;
    for (map<char, float>::const_iterator it = test.begin(); it != test.end(); ++it)
        test2.insert(makepair(it->second,it->first));
mirumir
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 12
19.04.2016, 22:21  [ТС]     Сортировка map по значению #3
Спасибо, но не работает
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
20.04.2016, 08:06     Сортировка map по значению #4
Цитата Сообщение от mirumir Посмотреть сообщение
не работает
Приведите код того, что не работает.
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,660
Записей в блоге: 1
20.04.2016, 11:54     Сортировка map по значению #5
Можно создать вектор и записать в него ссылки на элементы map. Плюс функция/функтор сортировки вектора.
Yandex
Объявления
20.04.2016, 11:54     Сортировка map по значению
Ответ Создать тему

Метки
map, сортировка, сортировка c++
Опции темы

Текущее время: 06:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru