170 похожих чатов

Всем добрый вечер, решаю одну задачу и хотелось бы спросить

насчёт её реализации. В файле есть 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();
}

Так вот, такая реализация вообще адекватная, или за такое по рукам бить нужно? И если в ней что-то не так, то какие можете предложить варианты?

2 ответов

21 просмотр

а почему бы просто не сделать класс? class Data { // дай название более говорящее private: int id, hour, minute, day; public: Data(int ...) : id(..),.... {} // в конструкторе значения установи }; Если тебе нужна сортировка, то в класс добавь перегрузку оператора < friend bool operator<(const Data& data1, const Data& data2){ return <тут критерий сортировки> }

Ярослав- Автор вопроса
\--
а почему бы просто не сделать класс? class Data { ...

Хммм, но я пока подумаю, что можно в мапами сделать, если зайду в тупик, то и правда класс сделаю. Спасибо за идею)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта