Skip to content
Snippets Groups Projects
Commit dfc1fc5b authored by Mathieu Valois's avatar Mathieu Valois
Browse files

Fix map collision by using multimap for stats in decreasing order

parent df80fdf5
No related branches found
No related tags found
No related merge requests found
......@@ -37,8 +37,8 @@ using MapIterator = typename std::map<K, V>::const_iterator;
* @return ordered map
*/
template<typename A>
std::map<uint64_t, A, std::greater<uint64_t>> flip_map(const std::unordered_map<A, uint64_t> & src) {
std::map<uint64_t, A, std::greater<uint64_t>> dst;
std::multimap<uint64_t, A, std::greater<uint64_t>> flip_map(const std::unordered_map<A, uint64_t> & src) {
std::multimap<uint64_t, A, std::greater<uint64_t>> dst;
for(UnorderedMapIterator<A, uint64_t> it = src.begin(); it != src.end(); ++it)
dst.insert(std::make_pair(it->second, it->first));
......@@ -83,7 +83,7 @@ void readResult(const uint64_t & res, const Type& carac, int & count, const uint
template<typename Type>
void showMap(const std::unordered_map<Type, uint64_t> & stats, const int & top, const uint64_t & total_counter, const int & hiderare, int & count) {
count = 0;
std::map<uint64_t, Type, std::greater<uint64_t>> reverse = flip_map<Type>(stats);
std::multimap<uint64_t, Type, std::greater<uint64_t>> reverse = flip_map<Type>(stats);
std::pair<uint64_t, Type> it;
for(std::pair<uint64_t, Type> it : reverse) {
readResult<Type>(it.first, it.second, count, total_counter, hiderare);
......
......@@ -169,7 +169,7 @@ void Statsgen::print_stats() {
if (! outfile_name.empty()){
locale::global(locale("C"));
ofstream outfile_stream(outfile_name);
map<uint64_t, string, greater<uint64_t>> reverse = flip_map(results.advancedmasks);
multimap<uint64_t, string, greater<uint64_t>> reverse = flip_map(results.advancedmasks);
for(pair<uint64_t, string> it : reverse){
if(it.second == "othermasks") continue;
outfile_stream << it.second << "," << it.first << endl;
......
......@@ -162,7 +162,7 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh
percentageSecurity = percentage(stats.getNbSecurePasswords(), total);
/* LENGTH HISTOGRAM */
map<uint64_t, int, greater<uint64_t>> reverseL = flip_map<int>(stats.getStatsLength());
multimap<uint64_t, int, greater<uint64_t>> reverseL = flip_map<int>(results.length);
double percentageL;
double maxPercLength = 0;
uint64_t nbHideL = 0;
......@@ -187,7 +187,7 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh
/* CHARSET PIECHART */
map<uint64_t, string, greater<uint64_t>> reverseC = flip_map(stats.getStatsCharsets());
multimap<uint64_t, string, greater<uint64_t>> reverseC = flip_map(results.charactersets);
uint64_t top = 0;
uint64_t nbHideC = 0;
pieCharset->clear();
......@@ -203,7 +203,7 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh
pieCharset->append("Other charsets", nbHideC);
/* SIMPLE PIECHART */
map<uint64_t, string, greater<uint64_t>> reverseS = flip_map(stats.getStatsSimple());
multimap<uint64_t, string, greater<uint64_t>> reverseS = flip_map(results.simplemasks);
uint64_t top_simple = 0;
uint64_t nbHideS = 0;
pieSimple->clear();
......@@ -219,7 +219,7 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh
pieSimple->append("Other Masks", nbHideS);
/* ADVANCED PIECHART */
map<uint64_t, string, greater<uint64_t>> reverseA = flip_map(stats.getStatsAdvanced());
multimap<uint64_t, string, greater<uint64_t>> reverseA = flip_map(results.advancedmasks);
uint64_t top_advanced = 0;
uint64_t nbHideA = 0;
pieAdvanced->clear();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment