Загрузка данных


#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>

#include "json.hpp"

using json = nlohmann::json;

struct Item {
    std::string key;
    int value;
};

int main() {
    std::ifstream file("t2.json");

    if (!file.is_open()) {
        std::cout << "Cannot open file\n";
        return 1;
    }

    json j;
    file >> j;

    std::vector<int> values = j["values"];
    std::vector<std::string> keys = j["keys"];
    int default_value = j["default_value"];

    std::vector<Item> items;

    for (size_t i = 0; i < keys.size(); ++i) {
        int val;

        if (i < values.size())
            val = values[i];
        else
            val = default_value;

        items.push_back({keys[i], val});
    }

    // сортировка по убыванию value
    std::sort(items.begin(), items.end(),
        [](const Item& a, const Item& b) {
            return a.value > b.value;
        });

    // вывод ключей
    for (const auto& item : items) {
        std::cout << item.key << std::endl;
    }

    return 0;
}