【发布时间】:2019-04-14 00:38:39
【问题描述】:
我有 2 个迭代器 range_begin、range_end,它们是我的容器。我需要找到所有以 char 前缀开头的字符串。 这是我的代码:
template <typename RandomIt>
pair<RandomIt, RandomIt> FindStartsWith(
RandomIt range_begin, RandomIt
range_end,char prefix){
auto it=equal_range(range_begin,range_end,prefix,
[prefix](const string& city){return city[0]==prefix;});
return it;}
例如,对于
const vector<string> sorted_strings = {"moscow", "murmansk", "vologda"};
auto it=FindStartsWith(strings.begin(),strings.end(),'m');
我想首先在“moscow”上获取迭代器,最后在“murmansk”之后获取迭代器。
我收到奇怪的编译器错误。出了什么问题,我该如何解决?我无法编写正确的 lambda 比较器。
【问题讨论】:
标签: c++ vector iterator equal-range