C++ STL中的mismatch算法是如何实现元素不匹配的详细机制?

2026-04-17 00:511阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1702个文字,预计阅读时间需要7分钟。

C++ STL中的mismatch算法是如何实现元素不匹配的详细机制?

equal() 函数可以告诉我两个序列是否匹配。mismatch() 函数也能告知两个序列是否匹配,如果它们不匹配,还能指出不匹配的位置。mismatch() 函数的4个版本和equal() 函数类似,提供相同的匹配信息。

equal() 算法可以告诉我们两个序列是否匹配。mismatch() 算法也可以告诉我们两个序列是否匹配,而且如果不匹配,它还能告诉我们不匹配的位置。

mismatch() 的 4 个版本和 equal() 一样有相同的参数——第二个序列有或没有结束迭代器,有或没有定义比较的额外的函数对象参数。mismatch() 返回的 pair 对象包含两个迭代器。它的 first 成员是一个来自前两个参数所指定序列的迭代器,second 是来自于第二个序列的迭代器。当序列不匹配时,pair 包含的迭代器指向第一对不匹配的元素;因此这个 pair 对象为 pair<iter1+n,iter2 + n>,这两个序列中索引为 n 的元素是第一个不匹配的元素。

当序列匹配时,pair 的成员取决于使用的 mismatch() 的版本和具体情况。iter1 和 end_iter1 表示定义第一个序列的迭代器,iter2 和 end_iter2 表示第二个序列的开始和结束迭代器。返回的匹配序列的 pair 的内容如下:

对于 mismatch(iter1,end_iter1,iter2):
  • 返回 pair<end_iter1,(iter2 + (end_ter1 - iter1))>,pair 的成员 second 等于 iter2 加上第一个序列的长度。如果第二个序列比第一个序列短,结果是未定义的。
阅读全文

本文共计1702个文字,预计阅读时间需要7分钟。

C++ STL中的mismatch算法是如何实现元素不匹配的详细机制?

equal() 函数可以告诉我两个序列是否匹配。mismatch() 函数也能告知两个序列是否匹配,如果它们不匹配,还能指出不匹配的位置。mismatch() 函数的4个版本和equal() 函数类似,提供相同的匹配信息。

equal() 算法可以告诉我们两个序列是否匹配。mismatch() 算法也可以告诉我们两个序列是否匹配,而且如果不匹配,它还能告诉我们不匹配的位置。

mismatch() 的 4 个版本和 equal() 一样有相同的参数——第二个序列有或没有结束迭代器,有或没有定义比较的额外的函数对象参数。mismatch() 返回的 pair 对象包含两个迭代器。它的 first 成员是一个来自前两个参数所指定序列的迭代器,second 是来自于第二个序列的迭代器。当序列不匹配时,pair 包含的迭代器指向第一对不匹配的元素;因此这个 pair 对象为 pair<iter1+n,iter2 + n>,这两个序列中索引为 n 的元素是第一个不匹配的元素。

当序列匹配时,pair 的成员取决于使用的 mismatch() 的版本和具体情况。iter1 和 end_iter1 表示定义第一个序列的迭代器,iter2 和 end_iter2 表示第二个序列的开始和结束迭代器。返回的匹配序列的 pair 的内容如下:

对于 mismatch(iter1,end_iter1,iter2):
  • 返回 pair<end_iter1,(iter2 + (end_ter1 - iter1))>,pair 的成员 second 等于 iter2 加上第一个序列的长度。如果第二个序列比第一个序列短,结果是未定义的。
阅读全文