gpt4 book ai didi

c++ - 查找具有前缀字符串的容器的相等范围

转载 作者:行者123 更新时间:2023-11-27 23:40:16 26 4
gpt4 key购买 nike

我有 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 comporator。

最佳答案

equal_range需要一个带有两个参数的比较函数;你正在传递一个接受一个的函数。

异构调用(其中 value 的类型与范围中的类型元素不同)需要一个比较函数,该函数可以按任意顺序获取两种类型。 lambda 在这种情况下不起作用,因为它只有一个 operator()。过载。

最后,该函数必须执行小于 类型的比较,而不是等于 类型的比较。粗略地说,equal_range返回第一个元素的范围 !(element < value) value < element 的第一个元素.

关于c++ - 查找具有前缀字符串的容器的相等范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55671069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com