Ваши ошибки могут быть связаны с strings.begin () и .end (), которые не имеют sorted_ . Я не думаю, что вы также должны использовать шаблон. Помимо ошибок, я рекомендую использовать другую стандартную функцию. Более простое решение - использовать foreach:
#include <algorithm>
#include <iterator>
#include <list>
#include <string>
#include <utility>
#include <vector>
typedef std::vector<std::string>::const_iterator RandomIt;
std::vector<std::string> FindStartsWith(RandomIt start, RandomIt end, const char prefix) {
std::vector<std::string> result;
std::for_each(start, end, [&](auto city) {
if (city.front() == prefix) {
result.push_back(city);
}
});
return result;
}
int main(int argc, char* argv[]) {
const std::vector<std::string> sorted_strings = { "moscow", "murmansk", "vologda" };
auto prefix_cities = FindStartsWith(sorted_strings.begin(), sorted_strings.end(), 'm');
return 0;
}
Определенно можно использовать рефакторинг, но я предполагаю, что вам нужно реализовать его в FindStartsWith по какой-то другой причине ...
Спасибо за публикацию, это многому меня научило в equal_range:)