gpt4 book ai didi

c++ - 为什么没有 std::move_n 算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:41 25 4
gpt4 key购买 nike

我假设有一个 std::copy_n这样就可以与输入迭代器一起使用。出于同样的原因没有 std::move_n 是否有某种原因?

最佳答案

我认为答案可能很平凡。

std::copy 永远存在,它是 C++03 中唯一的算法。

N1377 (2002) 在语言中添加了移动语义,还引入了算法 std::move()std::move_backward() 以反射(reflect)现有的 std: :copy()std::copy_backward()。这些是唯一存在的复制算法 - 因此它们是唯一获得 move 版本的算法。

N2569 (2008) 添加了更多算法,其中大部分存在于原始标准模板库实现中 - 这是 std::copy_n()std::copy_if() 来自。由于本文的前提是一堆已经存在并使用多年的算法,因此它不可能包括 std::move_n()std::move_if() .似乎根本没有考虑到这一点。

我猜如果这些发生的顺序相反,我们今天可能有 std::move_n()。但在这一点上,它可能不值得添加。因为 std::copy_n() 甚至不经常使用,而且 move_n 很容易实现:

template< class InputIt, class Size, class OutputIt>
OutputIt move_n(InputIt first, Size count, OutputIt result)
{
return std::copy_n(std::make_move_iterator(first), count, result);
}

关于c++ - 为什么没有 std::move_n 算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com