一. 概述
移除性算法是在一区间内移除某些元素,这些算法并不能改变元素的数量,它们只是以逻辑上的思考,将原本置于后面的“不移除元素”向前移动,覆盖那些被移除元素而已。它们都返回新区间的逻辑终点。
remove() | 将等于某特定值的元素全部移除 |
remove_if() | 将满足某准则的元素全部移除 |
remove_copy() | 将不等于某特定值的元素全部复制到它处 |
remove_copy()_if() | 将不满足某准则的元素全部复制到它处 |
unique() | 移除毗邻的重复元素 |
unique_copy() | 移除毗邻的重复元素,并复制到它处 |
1. 移除某序列内的元素
//移除区间[beg, end)中每一个与value相等的元素 ForwardIterator remove (ForwardIterator beg, ForwardIterator end, const T& value) //移除区间[beg, end)中每一个令op(elem)为true的元素 ForwardIterator remove_if (ForwardIterator beg, ForwardIterator end, UnaryPredicate op)2. 复制时一并移除元素
//将源区间[beg, end)内所有元素复制到以destBeg为起点的目标区间去, //并在复制过程中移除与value相等的所有元素 OutputIterator remove_copy (InputIterator sourceBeg, InputIterator sourceEnd, OutputIterator destBeg, const T& value) //两个算法都返回目标区间中最后一个被复制元素的下一位置 OutputIterator remove_copy_if (InputIterator sourceBeg, InputIterator sourceEnd, OutputIterator destBeg, UnaryPredicate op)三. 移除重复元素
1. 移除连续重复元素
//移除连续重复的元素,源序列必须是已排序的 void unique (ForwardIterator beg, ForwardIterator end) void unique (Forwardlterator beg, ForwardIterator end, BinaryPredicate op)2. 复制过程中移除重复元素
//将源区间[sourceBeg, sourceEnd)内的元素复制到以destBeg起始的目标区间 //并移除重复元素 OutputIterator unique_copy (InputIterator sourceBeg, InputIterator sourceEnd, OutputIterator destBeg) //两个算法都返回目标区间内最后一个被复制的元素的下一个位置 OutputIterator unique_copy (InputIterator sourceBeg, InputIterator sourceEnd, OutputIterator destBeg, BinaryPredicate op)