Advertisement
spacelexeus

Untitled

Apr 19th, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <utility>
  3. #include <vector>
  4. #include <string>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. template <typename RandomIt>
  10. pair<RandomIt, RandomIt> FindStartsWith(RandomIt range_begin, RandomIt range_end,
  11.                                         const string& prefix){
  12.     // на случай пустого вектора
  13.     if (range_begin == range_end) return make_pair(range_begin, range_end);
  14.    
  15.     auto itBegin = lower_bound(range_begin, range_end, prefix);
  16.     // далее манипуляции с prefix
  17.     string temp = (*itBegin).substr(0, prefix.length());
  18.     // если слово с префиксом есть...
  19.     if (temp == prefix) {
  20.         string postprefix = prefix;
  21.         ++postprefix[postprefix.length() - 1];
  22.        
  23.         auto itEnd = upper_bound(range_begin, range_end, postprefix);
  24.        
  25.         return make_pair(itBegin, itEnd);
  26.     // если слова с таким префиксом нет, то надо вставить перед
  27.     // ближайшим к префиксу
  28.     } else return make_pair(itBegin, itBegin);
  29.  
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement