std::experimental::ranges:: mismatch
|
template
<
InputIterator I1, Sentinel
<
I1
>
S1, InputIterator I2, Sentinel
<
I2
>
S2,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
,
|
(1) | (ranges TS) |
|
template
<
InputRange R1, InputRange R2,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
,
|
(2) | (ranges TS) |
|
template
<
InputIterator I1, Sentinel
<
I1
>
S1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
|
(3) |
(ranges TS)
(已弃用) |
|
template
<
InputRange R1,
class
I2,
class
Pred
=
ranges::
equal_to
<>
,
class
Proj1
=
ranges::
identity
,
class
Proj2
=
ranges::
identity
>
|
[
first1
,
last1
)
定义,另一个范围由
[
first2
,
last2
)
定义。
元素使用 pred 对两个范围的投影元素进行比较,操作方式类似于 ranges:: invoke ( pred, ranges:: invoke ( proj1, * i ) , ranges:: invoke ( proj2, * j ) ) 。
尽管存在上述声明,算法声明的实际模板参数数量和顺序是未指定的。因此,若在调用算法时使用了显式模板参数,该程序很可能不具备可移植性。
目录 |
参数
| first1, last1 | - | 元素的第一范围 |
| r1 | - | 元素的第一范围 |
| first2, last2 | - | 元素的第二范围 |
| r2 | - | 元素的第二范围 |
| first2_ | - | 元素第二范围的起始位置 |
| pred | - | 应用于投影元素的谓词 |
| proj1 | - | 应用于第一范围元素的投影 |
| proj2 | - | 应用于第二范围元素的投影 |
返回值
一个包含指向前两个不相等元素的迭代器的
tagged_pair
对象(第一个范围的迭代器具有标签
in1
,第二个范围的迭代器具有标签
in2
)。
当比较到达 last1 或 last2 (以先发生者为准)时若未发现不匹配项,则该迭代器对包含结束迭代器及来自另一范围的对应迭代器。
复杂度
最多应用谓词和每个投影 last1 - first1 次。
可能实现
template<InputIterator I1, Sentinel<I1> S1, InputIterator I2, Sentinel<I2> S2, class Proj1 = ranges::identity, class Proj2 = ranges::identity, class Pred = ranges::equal_to<>> requires IndirectRelation<Pred, projected<I1, Proj1>, projected<I2, Proj2>> auto mismatch(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = Pred{}, Proj1 proj1 = Proj1{}, Proj2 proj2 = Proj2{}) -> ranges::tagged_pair<tag::in1(I1), tag::in2(I2)> { while (first1 != last1 && first2 != last2 && ranges::invoke(pred, ranges::invoke(proj1, *first1), ranges::invoke(proj2, *first2))) { ++first1; ++first2; } return {first1, first2}; } |
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
查找两个范围首次出现差异的位置
(函数模板) |
|
|
判断两组元素是否完全相同
(函数模板) |
|
|
查找首个满足特定条件的元素
(函数模板) |
|
|
若一个范围按字典序小于另一个范围则返回
true
(函数模板) |
|
|
搜索元素范围
(函数模板) |