diff options
Diffstat (limited to '02-data_structures/03-hash_tables/01-phone_book')
-rw-r--r-- | 02-data_structures/03-hash_tables/01-phone_book/phone_book.cpp | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/02-data_structures/03-hash_tables/01-phone_book/phone_book.cpp b/02-data_structures/03-hash_tables/01-phone_book/phone_book.cpp index 182c36f..6f5e9af 100644 --- a/02-data_structures/03-hash_tables/01-phone_book/phone_book.cpp +++ b/02-data_structures/03-hash_tables/01-phone_book/phone_book.cpp @@ -32,37 +32,22 @@ void write_responses(const vector<string>& result) { vector<string> process_queries(const vector<Query>& queries) { vector<string> result; - // Keep list of all existing (i.e. not deleted yet) contacts. - vector<Query> contacts; - for (size_t i = 0; i < queries.size(); ++i) + + vector<string> contacts(10000000); + + for (size_t i = 0; i < queries.size(); ++i) { + int j = queries[i].number; if (queries[i].type == "add") { - bool was_founded = false; - // if we already have contact with such number, - // we should rewrite contact's name - for (size_t j = 0; j < contacts.size(); ++j) - if (contacts[j].number == queries[i].number) { - contacts[j].name = queries[i].name; - was_founded = true; - break; - } - // otherwise, just add it - if (!was_founded) - contacts.push_back(queries[i]); + contacts[j] = queries[i].name; } else if (queries[i].type == "del") { - for (size_t j = 0; j < contacts.size(); ++j) - if (contacts[j].number == queries[i].number) { - contacts.erase(contacts.begin() + j); - break; - } + contacts[j] = ""; } else { - string response = "not found"; - for (size_t j = 0; j < contacts.size(); ++j) - if (contacts[j].number == queries[i].number) { - response = contacts[j].name; - break; - } - result.push_back(response); + if (contacts[j].empty()) + result.push_back("not found"); + else + result.push_back(contacts[j]); } + } return result; } |