Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cassert>
- #include <iostream>
- #include <string_view>
- #include <algorithm>
- #include <map>
- #include <set>
- using namespace std;
- class Translator {
- public:
- Translator() = default;
- void Add(string_view source, string_view target) {
- all_words_.insert(string{ source });
- all_words_.insert(string{ target });
- first_to_second_lang_[*all_words_.find(string{ source })] = *all_words_.find(string{ target });
- second_to_first_lang_[*all_words_.find(string{ target })] = *all_words_.find(string{ source });
- }
- string_view TranslateForward(string_view source) const {
- if (first_to_second_lang_.count(source)) {
- return first_to_second_lang_.at(source);
- }
- return "";
- }
- string_view TranslateBackward(string_view target) const {
- if (second_to_first_lang_.count(target)) {
- return second_to_first_lang_.at(target);
- }
- return "";
- }
- private:
- map<string_view, string_view> first_to_second_lang_;
- map<string_view, string_view> second_to_first_lang_;
- set<string> all_words_;
- };
- 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();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment