Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "test_runner.h"
- #include "profile.h"
- #include <algorithm>
- #include <array>
- #include <iostream>
- #include <random>
- #include <vector>
- using namespace std;
- template <typename TAirport>
- class AirportCounter {
- public:
- using Item = pair<TAirport, size_t>;
- using Items = vector<Item>;
- AirportCounter()
- {
- //if(data.size() != static_cast<uint32_t>(TAirport::Last_)) {
- // data.resize(static_cast<uint32_t>(TAirport::Last_));
- //}
- if(data.size() == 0) {
- data.resize(static_cast<uint32_t>(TAirport::Last_));
- }
- }
- template <typename TIterator>
- AirportCounter(TIterator begin, TIterator end)
- {
- // if (data.size() != static_cast<uint32_t>(TAirport::Last_)) {
- // data.resize(static_cast<uint32_t>(TAirport::Last_));
- //}
- if(data.size() == 0) {
- data.resize(static_cast<uint32_t>(TAirport::Last_));
- }
- for (auto it = begin; it != end; it++) {
- data[static_cast<size_t>(*it)]++;
- }
- }
- size_t Get(TAirport airport) const
- {
- return data[static_cast<size_t>(airport)];
- }
- void Insert(TAirport airport)
- {
- data[static_cast<size_t>(airport)]++;
- }
- void EraseOne(TAirport airport)
- {
- if (data[static_cast<size_t>(airport)] != 0) {
- data[ static_cast<size_t>(airport)]--;
- }
- }
- void EraseAll(TAirport airport)
- {
- data[ static_cast<size_t>(airport)] = 0;
- }
- Items GetItems() const
- {
- vector<Item> res;
- res.resize(static_cast<uint32_t>(TAirport::Last_));
- for (int i = 0; i < data.size(); i++) {
- res[i] = make_pair(static_cast<TAirport>(i), data[i]);
- }
- return res;
- }
- private:
- vector<size_t> data;
- vector<Item> ports;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement