std :: copy_n是否与重叠范围一起工作?

 爱吃肉肉的狼 发布于 2023-02-08 15:36

我在N3485 25.3.1 [alg.copy]中查看了C++标准,它定义了4种算法:

copy

copy_backward

copy_if

copy_n

在描述中copy,有这个注释25.3.1 [alg.copy]/3:

要求:结果不应在[first,last]范围内

也就是说,copy当范围重叠(类似于memcpy)时,并不总是正常工作.

copy_backward并且copy_if有类似的语言禁止重叠范围(分别为25.3.1 [alg.copy]/14和25.3.1 [alg.copy]/8).

但是,没有这样的禁令copy_n,也没有copy_n_backward.这是否意味着copy_n当范围重叠时做正确的事情?

(MSVC++的实现copy_n似乎委托给了std::memmove,所以我知道它在MSVC++ 2013上是安全的.但是如果标准暗示的话,我不想依赖它)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有