G.5.2 修改式序列操作(5)
remove( )函数删除[first, last)区间中所有值为value的元素,并返回得到的区间的超尾迭代器。该函数是稳定的,这意味着未删除的元素的顺序将保持不变。
注意:由于所有的remove( )和unique( )函数都不是成员函数,同时这些函数并非只能用于STL容器,因此它们不能重新设置容器的长度。相反,它们返回一个指示新超尾位置的迭代器。通常,被删除的元素只是被移到容器尾部。然而,对于STL容器,可以使用返回的迭代器和erase( )方法来重新设置end( )。
20.remove_if( )
remove_if( )函数将pred(val)为true的所有val值从[first, last)区间删除,并返回得到的区间的超尾迭代器。该函数是稳定的,这意味着未删除的元素的顺序将保持不变。
21.remove_copy( )
remove_copy( )函数将[first, last)区间中的值复制到从result开始的区间中,复制时将忽略value。该函数返回得到的区间的超尾迭代器。该函数是稳定的,这意味着没有被删除的元素的顺序将保持不变。
22.remove_copy_if( )
remove_copy_if( )函数将[first, last)区间中的值复制到从result开始的区间,但复制时忽略pred(val)为true的val。该函数返回得到的区间的超尾迭代器。该函数是稳定的,这意味着没有删除的元素的顺序将保持不变。
23.unique( )
unique( )函数将[first, last)区间中由两个或更多相同元素构成的序列压缩为一个元素,并返回新区间的超尾迭代器。第一个版本使用值类型的= =运算符对元素进行比较;第二个版本使用二元谓词函数对象pred来比较元素。也就是说,如果pred(*it1, *it2)为true,则it1和it2指向的元素是匹配的。
24.unique_copy( )
unique_copy( )函数将[first, last)区间中的元素复制到从result开始的区间中,并将由两个或更多个相同元素组成的序列压缩为一个元素。该函数返回新区间的超尾迭代器。第一个版本使用值类型的= =运算符,对元素进行比较;第二个版本使用二元谓词函数对象pred来比较元素。也就是说,如果pred(*it1, *it2)为true,则it1和it2指向的元素是匹配的。
25.reverse( )
reverse( )函数通过调用swap(first, last - 1)等来反转[first, last]区间中的元素。