Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <numeric>
  3. #include <map>
  4. using namespace std;
  5. int main()
  6. {
  7.     const std::map<uint32_t,uint32_t> m = { {1,5}, {100,400}, {10,40}};
  8.  
  9.     auto irq_count = [](std::map<uint32_t, uint32_t> irq_map) {
  10.         uint32_t max_irq_num
  11.             = std::accumulate(irq_map.cbegin(), irq_map.cend(),
  12.                               uint32_t(0) /* starting max value */,
  13.                               [](uint32_t curr_max, auto irq_iter) {
  14.                                   return std::max(curr_max, irq_iter.first);
  15.                               });
  16.         return max_irq_num;
  17.     };
  18.     auto irq_count2 = [](std::map<uint32_t, uint32_t> irq_map) {
  19.         uint32_t max_irq_num = 0;
  20.         for (const auto iter : irq_map)
  21.         {
  22.             max_irq_num = std::max(max_irq_num, iter.first);
  23.         }
  24.         return max_irq_num;
  25.     };
  26.  
  27.     auto irq_count3 = [](const std::map<uint32_t, uint32_t>& irq_map) {
  28.         return std::max_element(irq_map.begin(), irq_map.end(), [](const auto& lhs, const auto& rhs) { return lhs.first < rhs.first;})->first;
  29.     };
  30.  
  31.     auto irq_count4 = [] (const auto& irq_map)
  32.     {
  33.         // Relies on irq_map being ordered map, constructed with the default comperator
  34.         return irq_map.rbegin()->first;
  35.     };
  36.  
  37.     cout << irq_count(m) << endl;
  38.     cout << irq_count2(m) << endl;
  39.     cout << irq_count3(m) << endl;
  40.     cout << irq_count4(m) << endl;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement