Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <numeric>
- #include <map>
- using namespace std;
- int main()
- {
- const std::map<uint32_t,uint32_t> m = { {1,5}, {100,400}, {10,40}};
- auto irq_count = [](std::map<uint32_t, uint32_t> irq_map) {
- uint32_t max_irq_num
- = std::accumulate(irq_map.cbegin(), irq_map.cend(),
- uint32_t(0) /* starting max value */,
- [](uint32_t curr_max, auto irq_iter) {
- return std::max(curr_max, irq_iter.first);
- });
- return max_irq_num;
- };
- auto irq_count2 = [](std::map<uint32_t, uint32_t> irq_map) {
- uint32_t max_irq_num = 0;
- for (const auto iter : irq_map)
- {
- max_irq_num = std::max(max_irq_num, iter.first);
- }
- return max_irq_num;
- };
- auto irq_count3 = [](const std::map<uint32_t, uint32_t>& irq_map) {
- return std::max_element(irq_map.begin(), irq_map.end(), [](const auto& lhs, const auto& rhs) { return lhs.first < rhs.first;})->first;
- };
- auto irq_count4 = [] (const auto& irq_map)
- {
- // Relies on irq_map being ordered map, constructed with the default comperator
- return irq_map.rbegin()->first;
- };
- cout << irq_count(m) << endl;
- cout << irq_count2(m) << endl;
- cout << irq_count3(m) << endl;
- cout << irq_count4(m) << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement