类别:算法 | 组件类型:函数 |
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在如何比较元素以确定相等方面有所不同。第一个使用operator==,第二个使用任意用户提供的函数对象comp。第一个版本返回第一个迭代器i在[first1, last1)中,使得对于某个迭代器j在[first2, last2), *i == *j。第二个返回第一个迭代器i在[first1, last1)中,使得对于某个迭代器j在[first2, last2), comp(*i, *j)是true。像往常一样,这两个版本都返回last1如果没有这样的迭代器i存在。
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); }