Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<algorithm>
- #include<iterator>
- using namespace std;
- template <typename RandomIt>
- pair<RandomIt, RandomIt> FindStartsWith(
- RandomIt range_begin, RandomIt range_end,
- char prefix) {
- pair<RandomIt, RandomIt>p;
- auto research = binary_search(range_begin, range_end,
- [prefix](const string& str) {
- return str[0] == prefix; });
- if (research == false) {
- auto position = upper_bound(range_begin, range_end,
- [prefix](const string& str) {
- return static_cast<char>(str[0]) > prefix; });
- p.first = position;
- p.second = position;
- return p;
- }
- else {
- p.first = upper_bound(range_begin, range_end, prefix);
- p.second = lower_bound(range_begin, range_end, prefix) - 1;
- return p;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement