std::experimental::ranges::find_first_of
来自cppreference.com
<tbody>
</tbody>
template< InputIterator I1, Sentinel<I1> S1, ForwardIterator I2, Sentinel<I2> S2, class Proj1 = ranges::identity, class Proj2 = ranges::identity, IndirectRelation<projected<I1, Proj1>, projected<I2, Proj2>> Pred = ranges::equal_to<> > I1 find_first_of( I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{} ); |
(1) | (范围 TS) |
template< InputRange R1, ForwardRange R2, class Proj1 = ranges::identity, class Proj2 = ranges::identity, IndirectRelation<projected<ranges::iterator_t<R1>, Proj1>, projected<ranges::iterator_t<R2>, Proj2>> Pred = ranges::equal_to<> > ranges::safe_iterator_t<R1> find_first_of( R1&& r1, R2&& r2, Pred pred = Pred{}, Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{} ); |
(2) | (范围 TS) |
1) 在范围
[first1, last1) 中,经过以 proj1 和 proj2 分别投射两个范围后,搜索范围 [first2, last2) 中的任何元素。使用 pred 比较投射后的元素。2) 与 (1) 相同,但用
r1 为第一源范围并用 r2 为第二源范围,如同以 ranges::begin(r1) 为 first1,以 ranges::end(r1) 为 last1,以 ranges::begin(r2) 为 first2,并以 ranges::end(r2) 为 last2。参数
| first1, last1 | - | 要检验的元素范围 |
| r1 | - | 要检验的元素范围 |
| first2, last2 | - | 要搜索的元素范围 |
| r2 | - | 要搜索的元素范围 |
| pred | - | 用于比较投射后元素的谓词 |
| proj1 | - | 应用于第一范围中元素的投射 |
| proj2 | - | 应用于第一范围中元素的投射 |
返回值
指向范围 [first1, last1) 中首个投射后等于范围 [first2, last2) 中元素的元素的迭代器。如果未找到这种元素,则返回与 last1 比较相等的迭代器。
复杂度
至多 (S * N) 此运用谓词和各投射,其中 S = distance(last2 - first2) 且 N = last1 - first1。
可能的实现
template<InputIterator I1, Sentinel<I1> S1, ForwardIterator I2, Sentinel<I2> S2,
class Proj1 = ranges::identity, class Proj2 = ranges::identity,
IndirectRelation<projected<I1, Proj1>,
projected<I2, Proj2>> Pred = ranges::equal_to<>>
I1 find_first_of(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{},
Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{})
{
for (; first1 != last1; ++first1)
for (ForwardIt it = first2; it != last2; ++it)
if (ranges::invoke(pred, ranges::invoke(proj1, *first1),
ranges::invoke(proj2, *it)))
return first1;
return first1;
}
|
示例
| 本节未完成 原因:暂无示例 |
参阅
| 搜索一组元素中任一元素 (函数模板) | |
| 寻找首个满足特定判别标准的元素 (函数模板) |