线性查找
find(InputIterator first, InputIterator last, const T EqualityComparable& value);
找到range中与value值相等的第一个值的iterator
find_if(InputIterator first, InputIterator last, Predicate pred);
找到range中满足pred的第一个值的iterator,pred为单参数的函数对象
adjacent_find(ForwardIterator start, ForwardIterator last);
adjacent_find(ForwardIterator start, ForwardIterator last, BinaryPredicate bindary_pred);
第一个版本为找到连续的两个相等的值,返回第一个值的iterator
第二个版本为找到连续的两个值,要求其满足bindary_pred,其中bindary_pred是两个参数的函数对象
find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2);
find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate bindary_pred);
第一个版本找到在range1中的第一个iterator,它与range2中的某一个元素相等
第二个版本找到在range1中的第一个iterator,它与range2中的某一个元素满足bindary_pred,其中bindary_pred是两个参数的函数对象
子序列匹配
search(ForwardIterator first1, ForwardIterator last1, ForwardIterator first2, ForwardIterator last2);
search(ForwardIterator first1, ForwardIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate bindary_pred);
从range1中找出第一个与range2相同的子序列,相同则返回指向range1中子序列开头的iterator,返回子序列的开头,否则返回last1
第二个版本加了一个函数对象
例如:
int* p = search(array, array + 10, array2, array2 + 5);
if(p != array + 10)
......;
find_end(ForwardIterator first1, ForwardIterator last1, ForwardIterator first2, ForwardIterator last2);
find_end(ForwardIterator first1, ForwardIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate bindary_pred);
找出最后一个子序列,其余与search相同
search_n(ForwardIterator first, ForwardIterator last, Integer count, const T& value);
search_n(ForwardIterator first, ForwardIterator last, Integer count, const T& value, BinaryPredicte bindary_pred);
从range中找出这样一个子序列,由count个值为value的元素组成,返回指向子序列的开头的iterator。注意如果count为0,则会返回first
第二个版本增加了自定义函数对象
计算元素个数
count(InputIterator first, InputIterator last, const EqualityComparable& value, Size& n);
计算出range中与value值相同的元素个数,存放在n中
经测试vc与gcc中只有这个版本
count_if(InputIterator first, InputIterator last, predicte pred, Size& n);
计算出range中满足pred的元素个数,存放在n中
for_each
for_each(InputIterator first, InputIterator last, UnaryFunction f);
对range中的所有元素执行动作f,通常忽略f的返回值(如果有的话)
比较两个range
equal(InputIterator first1, InputIterator last1, InputIterator first2)
将(first1, last1)与(first2, first2 + (last1 - first1))进行比较,如果元素一一对应相同,则返回true,否则返回false
equal(InputIterator first1, InputIterator last1, InputIterator first2, BinaryPredicte bindary_pred)
自定义函数对象的版本
mismatch(InputIterator first1, InputIterator last1, InputIterator first2)
将(first1, last1)与(first2, first2 + (last1 - first1))进行比较,返回值为一个pair<InputInterator, InputIterator>
记录指向两个range第一个不同元素的interator,否则返回两个range的last
mismatch(InputIterator first1, InputIterator last1, InputIterator first2, BinaryPredicte bindary_pred)
自定义函数对象的版本
lexicographical_compare(InputIterator first1, InputIterator last1, InputIterator first2, InputIterator last2);
按字典排序法比较
lexicographical_compare(InputIterator first1, InputIterator last1, InputIterator first2, InputIterator last2, BinaryPredicate comp);
自定义函数对象的版本
最大值与最小值
min(const LessThanComparable& a, const LessThanComparable& b)
min(const LessThanComparable& a, const LessThanComparable& b, BinaryPredicate comp)
max(const LessThanComparable& a, const LessThanComparable& b)
max(const LessThanComparable& a, const LessThanComparable& b, BinaryPredicate comp)
min_element(ForwardIterator first, ForwardIterator last)
min_element(ForwardIterator first, ForwardIterator last, BinaryPredicate comp)
找出range中的最小元素,返回一个iterator
max_element(ForwardIterator first, ForwardIterator last)
max_element(ForwardIterator first, ForwardIterator last, BinaryPredicate comp)
找出range中的最大元素,返回一个iterator