насчёт её реализации. В файле есть N строк, в каждой строке есть следующая информация: день, час, минута, id, статус. Потом с этими данными нужно производить кое-какие действия(в подробности вдаваться не буду, ибо надеюсь, что сам сделаю). Я решил, что удобнее всего мне использовать "вложенные" map(извиняюсь, если не так назвал). Выбрал такой вариант, потому что дни, часы и минуты для каждого id должны быть сортированы. У меня получился следующий код:
std::ifstream work_file("input.txt");
int N;//кол-во записей
std::string line;
std::getline(work_file, line);
N = std::stoi(line);
std::map<int, std::map<int, std::map<int, std::map<int, std::string>>>> id; //id -> day -> hour -> minute -> status
std::map<int, std::map<int, std::map<int, std::string>>> day;
std::map<int, std::map<int, std::string>> hour;
std::map<int, std::string> minute;
while (getline(work_file, line))
{
std::stringstream ss;
std::string value;
std::vector<std::string>nums(5);
while (ss >> value)
{
nums.push_back(value);
}
minute.insert({ std::stoi(nums[2]),nums[4] });
hour.insert({ std::stoi(nums[1]),minute });
day.insert({ std::stoi(nums[0]),hour });
id.insert({ std::stoi(nums[3]),day });
nums.clear();
}
Так вот, такая реализация вообще адекватная, или за такое по рукам бить нужно? И если в ней что-то не так, то какие можете предложить варианты?
а почему бы просто не сделать класс? class Data { // дай название более говорящее private: int id, hour, minute, day; public: Data(int ...) : id(..),.... {} // в конструкторе значения установи }; Если тебе нужна сортировка, то в класс добавь перегрузку оператора < friend bool operator<(const Data& data1, const Data& data2){ return <тут критерий сортировки> }
Хммм, но я пока подумаю, что можно в мапами сделать, если зайду в тупик, то и правда класс сделаю. Спасибо за идею)
Обсуждают сегодня