Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cassert>
- #include <iostream>
- #include <string_view>
- #include <vector>
- #include <map>
- using namespace std;
- class Translator {
- public:
- void Add(string_view source, string_view target);
- string_view TranslateForward(string_view source) const;
- string_view TranslateBackward(string_view target) const;
- private:
- vector<string> find_word;
- map<string, string> word_translate_forward;
- map<string, string> word_translate_backward;
- };
- void Translator::Add(string_view source, string_view target)
- {
- find_word.emplace_back(source);
- find_word.emplace_back(target);
- string source_view = find_word.at(find_word.size()-2);
- string target_view = find_word.at(find_word.size()-1);
- word_translate_forward[source_view] = target_view;
- word_translate_backward[target_view] = source_view;
- }
- string_view Translator::TranslateForward(string_view source) const
- {
- string_view x;
- if (word_translate_forward.count(static_cast<string>(source)) > 0)
- {
- for (const auto& [key, value] : word_translate_forward)
- {
- x = value;
- return x;
- }
- }
- return x;
- }
- string_view Translator::TranslateBackward(string_view target) const
- {
- string_view x;
- if (word_translate_backward.count(static_cast<string>(target)) > 0)
- {
- for (const auto& [key, value] : word_translate_backward)
- {
- x = value;
- return x;
- }
- }
- return x;
- }
- void TestSimple() {
- Translator translator;
- translator.Add(string("okno"s), string("window"s));
- translator.Add(string("stol"s), string("table"s));
- assert(translator.TranslateForward("okno"s) == "window"s);
- assert(translator.TranslateBackward("table"s) == "stol"s);
- assert(translator.TranslateForward("table"s) == ""s);
- }
- int main()
- {
- TestSimple();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement