【问题标题】:How can we add element to map<int,int>... so that they are stored in non increasing order in map我们如何将元素添加到 map<int,int>... 以便它们在 map 中以非递增顺序存储
【发布时间】:2021-02-10 15:00:31
【问题描述】:

如何使std::map&lt;int,int&gt; 以非递增顺序对值进行排序?

map<int,int> mp;
  
mp[5]=7; // {5->7}
mp[3]=9; // {5->7,3->9}
mp[4]=9; // {5->7,4->9,3->9}

【问题讨论】:

    标签: c++11 stl c++14 c++17


    【解决方案1】:
    #include <iostream>
    #include <map>
    
    int main()
    {
      std::map<int, int, std::greater<int>> mp; 
      mp[5] = 7;
      mp[3] = 9;
      mp[4] = 9;
    
      for (auto [k, v] : mp)
      {
        std::cout << "\n" << k << "->" << v;
      }
      return 0;
    }
    

    哪些打印:

    5->7
    4->9
    3->9
    

    我们使用std::greater&lt;int&gt; 而不是默认的std::lesser&lt;int&gt; 请参阅std::map


    另外请注意,您还可以使用 reverse_iteratorrbegin()/rend() 方法)对反向顺序进行迭代:

      auto iter = mp.rbegin();
      const auto iter_end = mp.rend();
    
      while (iter != iter_end)
      {
        std::cout << "\n" << iter->first << "->" << iter->second;
        ++iter;
      }
    

    将以相反的顺序打印映射(键,值)...

    3->9
    4->9
    5->7
    

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多