I am trying to reorder the map in a descending way depending on the values, I have been trying to create a new map and insert the one which has the biggest value first but it keeps ordering the map by the keys.
I have also tried to reorder it by the value changing the form of the map into the other way but I will loose some data because I have more than one key which has the same value.
#include <iostream>
#include "SymbolFreq.h"
#include <string>
#include <fstream>
#include <streambuf>
#include <map>
using namespace std;
int main()
{
    map <char, int> mymap;
    map <char, int> realmap;
    ifstream infile{ "ToCompress.txt" };
    std::string str((std::istreambuf_iterator<char>(infile)),
        std::istreambuf_iterator<char>());
    
    std::map<char, int>::iterator itera;
    for (auto it = str.begin(); it != str.end(); ++it)
    {
        itera = mymap.find(*it);
        if (itera != mymap.end())
        {
            itera->second++;
        }
        else
        {
            mymap.insert({ *it, 1 });
        }
    }
    int max = 0;
    char provisionalChar;
    int provisionalInt;
    while (mymap.empty() == false)
    {
        for (auto it = mymap.cbegin(); it != mymap.cend(); ++it)
        {
            if (it->second > max)
            {
                max = it->second;
                provisionalChar = it->first;
                provisionalInt = it->second;
            }
            
            
            //cout << it->first << "\t" << it->second << "\n";
        }
        mymap.erase(provisionalChar);
        realmap.insert({ provisionalChar, provisionalInt });
        max = 0;
    }
    for (auto it = realmap.cbegin(); it != realmap.cend(); ++it)
    {
    
        cout << it->first << "\t" << it->second << "\n";
    }
    return 0;
}
 
     
     
    