C++ 没有减少memcpy和 的替代品memmove。
对于非重叠范围通常std::copy使用,但std::copy_backwards也可以使用。
对于重叠范围,您需要使用std::copy或 ,std::copy_backwards具体取决于重叠的性质。
对于复制成本较高的对象,如果原始对象不需要保留其值,则可以分别使用std::move( <algorithm>)和( ) 来代替。std::move_backward
Run Code Online (Sandbox Code Playgroud)template< class InputIt, class OutputIt > OutputIt copy( InputIt first, InputIt last, OutputIt d_first );将 [first, last) 定义的范围中的元素复制到从 d_first 开始的另一个范围。
复制 [first, last) 范围内的所有元素,从第一个开始,一直到 last - 1。如果 d_first 在 [first, last) 范围内,则行为未定义。在这种情况下,可以使用 std::copy_backward 来代替。
注意
复制重叠范围时, std::copy 适用于向左复制(目标范围的开头超出源范围),而 std::copy_backward 适用于向右复制(目标范围的末尾超出源范围)源范围)。
Run Code Online (Sandbox Code Playgroud)template< class BidirIt1, class BidirIt2 > BidirIt2 copy_backward( BidirIt1 first, BidirIt1 last, BidirIt2 d_last );将 [first, last) 定义的范围中的元素复制到以 d_last 结尾的另一个范围。以相反的顺序复制元素(首先复制最后一个元素),但保留它们的相对顺序。
如果 d_last 在 (first, last] 范围内,则行为未定义。在这种情况下,必须使用 std::copy 而不是 std::copy_backward。
注意
复制重叠范围时, std::copy 适用于向左复制(目标范围的开头超出源范围),而 std::copy_backward 适用于向右复制(目标范围的末尾超出源范围)源范围)。
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |