我正在尝试了解std::searchstd::find_first_of之间的区别

它们具有相同的原型(prototype):

template <class ForwardIterator1, class ForwardIterator2>
   ForwardIterator1 find_first_of (ForwardIterator1 first1, ForwardIterator1 last1,
                                   ForwardIterator2 first2, ForwardIterator2 last2);

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
   ForwardIterator1 find_first_of (ForwardIterator1 first1, ForwardIterator1 last1,
                                   ForwardIterator2 first2, ForwardIterator2 last2,
                                   BinaryPredicate pred);

template <class ForwardIterator1, class ForwardIterator2>
   ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1,
                            ForwardIterator2 first2, ForwardIterator2 last2);

template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
   ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1,
                            ForwardIterator2 first2, ForwardIterator2 last2,
                            BinaryPredicate pred);

它们都返回相同的东西:一个迭代器,该序列迭代到[first1,last1)内部序列[first2,last2)的第一次出现。 (使用相等性或二进制谓词)

那么区别是什么呢 ?我错了吗 ?

最佳答案

区别在于std::search在另一个范围内搜索整个元素范围,而std::find_first_of在另一个范围内搜索单个元素。

08-17 23:35