
修改序列的操作
文章平均质量分 86
算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为 [first, last) ,其中 last 指代要查询或修改的最后元素的后一个元素。
修改序列的操作
繁星璀璨G
单身,求对象
展开
-
C++11标准模板(STL)- 算法库 - 修改序列的操作 - 从一个序列中随机选择 n 个元素(std::sample)
从序列 [first; last) 选择 n 个元素,使得每个样本拥有相等的出现概率,并写入这些被选择元素到输出迭代器 out 。用随机数生成器 g 生成随机数。若 n 大于序列中的元素数量,则选择 last-first 个元素。算法仅若 PopulationIterator 满足遗留向前迭代器 (LegacyForwardIterator) 要求才稳定(保持被选择元素 的顺序)。原创 2024-08-13 00:22:52 · 477 阅读 · 0 评论 -
C++11标准模板(STL)- 算法库 - 修改序列的操作 - 迁移范围中的元素(std::shift_left, std::shift_right)
将范围 [first, last) 中的元素迁移 n 个位置。1) 向范围开端迁移元素。若 n = last - first 则无效果。否则,对于每个 [0, last - first - n) 中的整数 i ,移动原于位置 first + n + i 的元素到位置 first + i 。以 i 从 0 开始递增的顺序进行移动。原创 2024-08-12 08:30:00 · 841 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::unique_copy)
从范围 [first, last) 复制元素到始于 d_first 的另一范围,使得无连续的相等元素。只复制每组等价元素的首元素。1) 用 operator== 比较元素。3) 用给定的二元谓词 p 比较元素。原创 2022-11-13 08:30:00 · 766 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::unique)
从来自范围 [first, last) 的相继等价元素组消除首元素外的元素,并返回范围的新逻辑结尾的尾后迭代器。1) 用 operator== 比较元素。若它不是等价关系则行为未定义。3) 用给定的谓词 p 比较元素。若它不是等价关系则行为未定义。原创 2022-11-12 08:30:00 · 1104 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::random_shuffle, std::shuffle)
重排序给定范围 [first, last) 中的元素,使得这些元素的每个排列拥有相等的出现概率。1) 随机数生成器是实现定义的,但经常使用函数 std::rand 。2) 随机数生成器为函数对象 r 。3) 随机数生成器为函数对象 g 。原创 2022-11-11 08:30:00 · 1481 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::rotate_copy)
1) 从范围 [first, last) 复制元素到始于 d_first 的另一范围,使得 n_first 成为新范围的首元素,而 n_first - 1 成为末元素。原创 2022-11-10 08:30:00 · 415 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::rotate)
1) 进行元素范围上的左旋转。 具体而言, std::rotate 交换范围 [first, last) 中的元素,方式满足元素 n_first 成为新范围的首个元素,而 n_first - 1 成为最后元素。 此函数的前提条件是 [first, n_first) 和 [n_first, last) 为合法范围。原创 2022-11-09 08:32:47 · 2016 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::reverse_copy)
1) 复制来自范围 [first, last) 的元素到始于 d_first 的新范围,使得新范围中元素以逆序排列。 表现如同通过对于每个非负的 i < (last - first) 执行一次赋值 *(d_first + (last - first) - 1 - i) = *(first + i) 。 若源与目标范围(分别为 [first, last) 和 [d_first, d_first+(last-first)) )重叠,则行为未定义。原创 2022-11-08 08:30:00 · 717 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::reverse)
1) 反转 [first, last) 范围中的元素顺序 表现如同应用 std::iter_swap 到对于非负 i < (last-first)/2 的每对迭代器 first+i, (last-i) - 1原创 2022-11-07 08:30:00 · 1649 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::iter_swap)
交换给定的迭代器所指向的元素的值。原创 2022-11-06 08:30:00 · 755 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::swap_ranges)
1) 在范围 [first1, last1) 和始于 first2 的另一范围间交换元素。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-11-05 08:30:00 · 499 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::swap)
交换给定值1) 交换 a 与 b 。此重载仅若 std::is_move_constructible_v && std::is_move_assignable_v 为 true 才参与重载决议。 (C++17 起)原创 2022-11-04 08:30:00 · 1806 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::replace_copy, std::replace_copy_if)
复制来自范围 [first, last) 的所有元素到始于 d_first 的范围,并以 new_value 替换所有满足特定判别标准的元素。源与目标范围不能重叠。1) 替换所有等于 old_value 的元素。3) 替换所有谓词 p 对其满足 true 的元素。原创 2022-11-03 08:30:00 · 561 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::replace, std::replace_if)
以 new_value 替换范围 [first, last) 中所有满足特定判别标准的元素。1) 替换所有等于 old_value 的元素。3) 替换所有谓词 p 对其返回 true 的元素。原创 2022-11-02 08:30:00 · 2240 阅读 · 0 评论 -
C++标准模板(STL)(std::remove_copy, std::remove_copy_if)
复制来自范围 [first, last) 的元素到始于 d_first 的另一范围,省略满足特定判别标准的元素。源与目标范围不能重叠。1) 忽略所有等于 value 的元素。3) 忽略所有谓词 p 对其返回 true 的元素。原创 2022-11-01 08:30:00 · 653 阅读 · 0 评论 -
c++标准模板(STL)- 算法 (std::remove, std::remove_if)
从范围 [first, last) 移除所有满足特定判别标准的元素,并返回范围新结尾的尾后迭代器。1) 移除所有等于 value 的元素。3) 移除所有 p 对于它返回 true 的元素,用 operator== 比较它们。原创 2022-10-31 08:30:00 · 3226 阅读 · 0 评论 -
C++标准模板(STL)- 算法 (std::generate_n)
1) 若 count>0 ,则赋值给定函数对象 g 所生成的值给始于 first 的范围的首 count 个元素。否则不做任何事。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-10-30 08:30:00 · 709 阅读 · 0 评论 -
C++标准模板(STL)- 算法 (std::generate)
1) 以给定函数对象 g 所生成的值赋值范围 [first, last) 中的每个元素。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-10-29 08:30:00 · 1092 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::transform)
std::transform 应用给定的函数到范围并存储结果于始于 d_first 的另一范围。1) 应用一元函数 unary_op 到 [first1, last1) 所定义的范围。原创 2022-10-28 08:30:00 · 1578 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::fill_n)
1) 若 count > 0 ,则赋值给定的 value 给始于 的范围的首 count 个元素。否则不做任何事。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-10-27 08:30:00 · 807 阅读 · 0 评论 -
C++标准模板(STL)(std::fill)
1) 赋值给定的 value 给 [first, last) 中的元素。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-10-26 08:30:00 · 1176 阅读 · 0 评论 -
c++标准模板(STL)- 算法 (std::move_backward)
移动来自范围 [first, last) 的元素到终于 d_last 的另一范围。以逆序移动元素(首先复制末元素),但保持其相对顺序。若 d_last 在 (first, last] 内则行为未定义。该情况下必须用 std::move 代替 std::move_backward 。原创 2022-10-25 08:30:00 · 765 阅读 · 0 评论 -
C++标准模板(STL)- 算法 (std::move)
1) 移动范围 [first, last) 中的元素到始于 d_first 的另一范围,从首元素开始逐次到末元素。此操作后被移动范围中的元素将仍然含有适合类型的合法值,但不必与移动前的值相同。原创 2022-10-24 08:30:00 · 958 阅读 · 0 评论 -
C++标准模板(STL)- 算法 (std::copy_backward)
复制来自 [first, last) 所定义范围的元素,到终于 d_last 的范围。以逆序复制元素(首先复制末元素),但保持其相对顺序。若 d_last 在 (first, last] 中则行为未定义。该情况下必须用 std::copy 取代 std::copy_backward 。原创 2022-10-23 08:30:00 · 856 阅读 · 0 评论 -
C++标准模板(STL)- 算法 (std::copy_n)
1) 若 count>0 ,则准确复制来自始于 first 的范围的 count 个值到始于 result 的范围。正式而言,对于每个非负整数 i < n 进行 *(result + i) = *(first + i) 。不同于 std::copy ,本算法容许重叠。2) 同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v 为 true 才参与重载决议。原创 2022-10-22 08:30:00 · 1216 阅读 · 0 评论 -
C++11标准模板(STL)- 算法(std::copy, std::copy_if)
复制 [first, last) 所定义的范围中的元素到始于 d_first 的另一范围。1) 复制范围 [first, last) 中的所有元素,从首元素开始逐次到末元素。若 d_first 在范围 [first, last) 中则行为未定义。此情况下可用 std::copy_backward 代替。3) 仅复制谓词 pred 对其返回 true 的元素。保持被复制元素的相对顺序。若源与目标范围重叠则行为未定义。2,4) 同 (1,3) ,但按照 policy 执行。原创 2022-10-21 08:30:00 · 981 阅读 · 0 评论