Seredenko-V

ParseQuery_string_view

Aug 6th, 2022
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. SearchServer::Query SearchServer::ParseQuery(const string_view text, bool sequenced_policy) const {
  2.     Query query;
  3.     for (const string_view word : SplitIntoWords(text)) {
  4.         if (!IsValidWord(word)) {
  5.             throw invalid_argument("Некорректный поисковый запрос.");
  6.         }
  7.         if (word == "-"s) {
  8.             throw invalid_argument("После знака \"-\" отсутствует слово.");
  9.         }
  10.         QueryWord query_word = ParseQueryWord(word);
  11.         if (!query_word.is_stop) {
  12.             if (query_word.is_minus) {
  13.                 query.minus_words.push_back(query_word.data);
  14.             } else {
  15.                 query.plus_words.push_back(query_word.data);
  16.             }
  17.         }
  18.     }
  19.     if (sequenced_policy) {
  20.         sort(query.plus_words.begin(), query.plus_words.end());
  21.         query.plus_words.erase(unique(query.plus_words.begin(), query.plus_words.end()), query.plus_words.end());
  22.  
  23.         sort(query.minus_words.begin(), query.minus_words.end());
  24.         query.minus_words.erase(unique(query.minus_words.begin(), query.minus_words.end()), query.minus_words.end());
  25.     }
  26.     return query;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment