MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
删除算法

MSTL删除算法的实现 更多...

函数

template<typename Iterator1, typename Iterator2, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
constexpr Iterator2 remove_copy (Iterator1 first, Iterator1 last, Iterator2 result, const T &value)
 复制范围中不等于指定值的元素
template<typename Iterator1, typename Iterator2, typename Predicate, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
constexpr Iterator2 remove_copy_if (Iterator1 first, Iterator1 last, Iterator2 result, Predicate pred)
 复制范围中不满足谓词的元素
template<typename Iterator, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
constexpr Iterator remove (Iterator first, Iterator last, const T &value)
 移除范围中等于指定值的元素
template<typename Iterator, typename Predicate, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
constexpr Iterator remove_if (Iterator first, Iterator last, Predicate pred)
 移除范围中满足谓词的元素
template<typename Container, typename U>
constexpr size_t erase (Container &cont, const U &value)
 从容器中删除所有等于指定值的元素
template<typename Container, typename Predicate>
constexpr size_t erase_if (Container &cont, Predicate pred)
 从容器中删除所有满足谓词的元素

详细描述

MSTL删除算法的实现

函数说明

◆ erase()

template<typename Container, typename U>
size_t erase ( Container & cont,
const U & value )
constexpr

从容器中删除所有等于指定值的元素

模板参数
Container容器类型
U值类型,必须与容器元素类型相同
参数
cont容器引用
value要删除的值
返回
删除的元素数量

从容器的所有元素中删除所有等于 value 的元素。 此操作会实际删除元素,容器大小会改变。

注解
要求容器提供 begin(), end(), erase() 方法
值类型 U 必须与容器的元素类型相同

在文件 remove.hpp135 行定义.

引用了 _MSTL, declval(), end() , 以及 remove_if().

◆ erase_if()

template<typename Container, typename Predicate>
size_t erase_if ( Container & cont,
Predicate pred )
constexpr

从容器中删除所有满足谓词的元素

模板参数
Container容器类型
Predicate谓词类型
参数
cont容器引用
pred一元谓词
返回
删除的元素数量

从容器中删除所有满足谓词 pred 的元素。 谓词应接受容器元素类型的值并返回可转换为 bool 的类型。 如果 pred(element) 返回 true,则该元素将被删除。

注解
要求容器提供 begin(), end(), erase() 方法

在文件 remove.hpp166 行定义.

引用了 _MSTL, end(), ref() , 以及 remove_if().

◆ remove()

template<typename Iterator, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
Iterator remove ( Iterator first,
Iterator last,
const T & value )
constexpr

移除范围中等于指定值的元素

模板参数
Iterator迭代器类型
T值类型
参数
first范围起始迭代器
last范围结束迭代器
value要移除的值
返回
新逻辑结束位置的迭代器

从范围 [first, last) 中移除所有等于 value 的元素。 被移除的元素会移动到范围的末尾,但不会被物理删除。 返回的迭代器指向移除操作后范围的新逻辑结束位置。

注解
算法保持剩余元素的相对顺序

在文件 remove.hpp92 行定义.

引用了 _MSTL, find(), next() , 以及 remove_copy().

◆ remove_copy()

template<typename Iterator1, typename Iterator2, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 remove_copy ( Iterator1 first,
Iterator1 last,
Iterator2 result,
const T & value )
constexpr

复制范围中不等于指定值的元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
T值类型
参数
first输入范围起始迭代器
last输入范围结束迭代器
result输出范围起始迭代器
value要排除的值
返回
输出范围结束迭代器

将范围 [first, last) 中不等于 value 的所有元素复制到以 result 开始的范围。 原范围保持不变。

如果 pred(*it) 返回 true,则该元素将被排除。

在文件 remove.hpp40 行定义.

被这些函数引用 remove().

◆ remove_copy_if()

template<typename Iterator1, typename Iterator2, typename Predicate, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 remove_copy_if ( Iterator1 first,
Iterator1 last,
Iterator2 result,
Predicate pred )
constexpr

复制范围中不满足谓词的元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
Predicate谓词类型
参数
first输入范围起始迭代器
last输入范围结束迭代器
result输出范围起始迭代器
pred一元谓词
返回
输出范围结束迭代器

将范围 [first, last) 中不满足谓词 pred 的所有元素复制到以 result 开始的范围。 原范围保持不变。

在文件 remove.hpp66 行定义.

被这些函数引用 remove_if().

◆ remove_if()

template<typename Iterator, typename Predicate, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
Iterator remove_if ( Iterator first,
Iterator last,
Predicate pred )
constexpr

移除范围中满足谓词的元素

模板参数
Iterator迭代器类型
Predicate谓词类型
参数
first范围起始迭代器
last范围结束迭代器
pred一元谓词
返回
新逻辑结束位置的迭代器

从范围 [first, last) 中移除所有满足谓词 pred 的元素。 谓词应接受元素类型的值并返回可转换为 bool 的类型。 如果 pred(*it) 返回 true,则该元素将被移除。

注解
算法保持剩余元素的相对顺序

在文件 remove.hpp114 行定义.

引用了 _MSTL, find_if(), next() , 以及 remove_copy_if().

被这些函数引用 erase() , 以及 erase_if().