在下面的函数中:
namespace r = std::ranges;
namespace rv = std::ranges::views;
std::optional<int> find_first_adjacent_duplicate(std::span<int> vals) {
auto pairs = vals | rv::slide(2);
auto adj_dup = r::find_if(pairs, [](auto&& r) {return r[0] == r[1]; });
if (adj_dup != pairs.end()) {
return (*adj_dup)[0];
} else {
return {};
}
}
我将vals | rv::slide(2)
存储在一个局部变量中的唯一原因是因为我需要一个范围视图的名称,以便我可以将find_if
的结果与其结束迭代器进行测试。
我想知道是否有办法仅凭借adj_dup
就判断adj_dup
是否等于pairs.end()
?