为什么 std::partition 没有不合适的变体?
Why does std::partition not have an out-of-place variant?
std::partition
is nifty, but it is in-place; and std::partition_copy
也不错,但是它需要两个输出迭代器,也就是说,如果你想使用同一个输出数组,你必须至少提前计算满足谓词的元素数量。为什么在 <algorithm>
中没有不合适的 std::partition
或单输出迭代器 std::partition_copy
?
大概是因为该功能已经可以通过以下方式实现:
- 正在复制原始容器并就地使用
partition
。
- 将单个目标容器调整为正确的大小,并使用
begin()
和 rbegin()
迭代器从正面和背面用 partition_copy
填充它。
std::partition
is nifty, but it is in-place; and std::partition_copy
也不错,但是它需要两个输出迭代器,也就是说,如果你想使用同一个输出数组,你必须至少提前计算满足谓词的元素数量。为什么在 <algorithm>
中没有不合适的 std::partition
或单输出迭代器 std::partition_copy
?
大概是因为该功能已经可以通过以下方式实现:
- 正在复制原始容器并就地使用
partition
。 - 将单个目标容器调整为正确的大小,并使用
begin()
和rbegin()
迭代器从正面和背面用partition_copy
填充它。