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

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

删除算法 的协作图:

函数

template<typename Iterator1, typename Iterator2, typename T>
constexpr Iterator2 remove_copy (Iterator1 first, Iterator1 last, Iterator2 result, const T &value)
 复制范围中不等于指定值的元素
template<typename Iterator1, typename Iterator2, typename Predicate>
constexpr Iterator2 remove_copy_if (Iterator1 first, Iterator1 last, Iterator2 result, Predicate pred)
 复制范围中不满足谓词的元素
template<typename Iterator, typename T>
constexpr Iterator remove (Iterator first, Iterator last, const T &value)
 移除范围中等于指定值的元素
template<typename Iterator, typename Predicate>
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)
 从容器中删除所有满足谓词的元素

详细描述

删除算法的实现

函数说明

◆ 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.hpp149 行定义.

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

被这些函数引用 rb_tree_erase_rebalance().

◆ 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.hpp175 行定义.

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

◆ remove()

template<typename Iterator, typename T>
Iterator remove ( Iterator first,
Iterator last,
const T & value )
constexpr

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

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

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

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

在文件 remove.hpp102 行定义.

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

◆ remove_copy()

template<typename Iterator1, typename Iterator2, typename T>
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.hpp45 行定义.

引用了 is_ranges_fwd_iter_v.

被这些函数引用 remove().

◆ remove_copy_if()

template<typename Iterator1, typename Iterator2, typename Predicate>
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.hpp73 行定义.

引用了 is_ranges_fwd_iter_v.

被这些函数引用 remove_if().

◆ remove_if()

template<typename Iterator, typename Predicate>
Iterator remove_if ( Iterator first,
Iterator last,
Predicate pred )
constexpr

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

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

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

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

在文件 remove.hpp126 行定义.

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

被这些函数引用 signal< Types >::emit(), erase() , 以及 erase_if().