diff --git a/main.cpp b/main.cpp index e095695..f04284b 100644 --- a/main.cpp +++ b/main.cpp @@ -42,16 +42,21 @@ string read_input(const string &prompt) { class MorseDecoder { private: - map morse_to_char; - -public: - MorseDecoder() { - for (const auto &[ch, code] : morse_map) { - morse_to_char[code] = ch; + static const map &get_morse_to_char() { + static map morse_to_char; + static bool initialized = false; + if (!initialized) { + for (const auto &[ch, code] : morse_map) { + morse_to_char[code] = ch; + } + initialized = true; } + return morse_to_char; } +public: char decode(const string &morse) { + const auto &morse_to_char = get_morse_to_char(); auto it = morse_to_char.find(morse); return it != morse_to_char.end() ? it->second : '?'; }