SGI

find_first_of

类别:算法 组件类型:函数

原型

find_first_of是一个重载名称;实际上有两个find_first_of函数。
template <class InputIterator, class ForwardIterator>
InputIterator find_first_of(InputIterator first1, InputIterator last1,
                            ForwardIterator first2, ForwardIterator last2);

template <class InputIterator, class ForwardIterator, class BinaryPredicate>
InputIterator find_first_of(InputIterator first1, InputIterator last1,
                            ForwardIterator first2, ForwardIterator last2,
                            BinaryPredicate comp);

描述

Find_first_of类似于find,因为它对输入迭代器范围执行线性搜索。不同之处在于,虽然find搜索一个特定值,find_first_of搜索多个值中的任何一个。具体来说,find_first_of搜索范围内第一个出现的[first1, last1)中的任何元素[first2, last2)。(请注意,此行为让人联想到标准 C 库中的函数strpbrk。)

这两个版本的find_first_of在如何比较元素以确定相等方面有所不同。第一个使用operator==,第二个使用任意用户提供的函数对象comp。第一个版本返回第一个迭代器i[first1, last1)中,使得对于某个迭代器j[first2, last2), *i == *j。第二个返回第一个迭代器i[first1, last1)中,使得对于某个迭代器j[first2, last2), comp(*i, *j)true。像往常一样,这两个版本都返回last1如果没有这样的迭代器i存在。

定义

在标准头文件algorithm中定义,并在非标准向后兼容头文件algo.h中定义。

类型要求

对于第一个版本对于第二个版本

先决条件

复杂度

最多(last1 - first1) * (last2 - first2)比较。

示例

strpbrk一样,的一个用途是find_first_of在字符串中查找空白字符;空格、制表符和换行符都是空白字符。
int main()
{
  const char* WS = "\t\n ";
  const int n_WS = strlen(WS);

  char* s1 = "This sentence contains five words.";
  char* s2 = "OneWord";


  char* end1 = find_first_of(s1, s1 + strlen(s1),
                             WS, WS + n_WS); 
  char* end2 = find_first_of(s2, s2 + strlen(s2),
                             WS, WS + n_WS); 

  printf("First word of s1: %.*s\n", end1 - s1, s1); 
  printf("First word of s2: %.*s\n", end2 - s2, s2); 
}

注释

另请参阅

find, find_if, search
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc。 保留所有权利。 商标信息