How can I sort a std::map first by value, then by key?

前端 未结 5 1201
暗喜
暗喜 2020-11-27 13:24

I need to sort a std::map by value, then by key. The map contains data like the following:

  1  realistically
  8         really
  4         rea         


        
5条回答
  •  孤城傲影
    2020-11-27 13:51

    EDIT: The other two answers make a good point. I'm assuming that you want to order them into some other structure, or in order to print them out.

    "Best" can mean a number of different things. Do you mean "easiest," "fastest," "most efficient," "least code," "most readable?"

    The most obvious approach is to loop through twice. On the first pass, order the values:

    if(current_value > examined_value)
    {
        current_value = examined_value
        (and then swap them, however you like)
    }
    

    Then on the second pass, alphabetize the words, but only if their values match.

    if(current_value == examined_value)
    {
        (alphabetize the two)
    }
    

    Strictly speaking, this is a "bubble sort" which is slow because every time you make a swap, you have to start over. One "pass" is finished when you get through the whole list without making any swaps.

    There are other sorting algorithms, but the principle would be the same: order by value, then alphabetize.

提交回复
热议问题