gpt4 book ai didi

c++ - copy_n 和 copy 的区别

转载 作者:行者123 更新时间:2023-11-30 01:15:12 29 4
gpt4 key购买 nike

下面的区别?哪一个有未定义的行为?两个?

std::copy_n(asdf.begin(), asdf.size(), asdf.begin());
std::copy(asdf.begin(), asdf.end(), asdf.begin());

假设 std::vector<int>被赋予函数。而且这两个功能并不像有些人说的那样。

这是标准的缺陷吗?

最佳答案

std::copy_n(asdf.begin(), asdf.size(), asdf.begin());

这不是未定义的行为。 copy_n 只要求 [first, first + n)[result, result + n) 是有效范围。通过您传递的参数,您可以保证它们是。 (我假设 asdf 是标准容器,或者具有类似行为的容器。我还假设所包含的类型具有行为良好的赋值运算符)

std::copy(asdf.begin(), asdf.end(), asdf.begin());

这有未定义的行为。对于 std::copyresult 不能在 [first, last)

范围内

关于c++ - copy_n 和 copy 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868263/

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