gpt4 book ai didi

c++ - 使用具有未定义行为的(STL)拷贝?

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

在评估中,我选择了选项LINE I 上的运行时错误。没有未定义行为这样的选项,尽管我认为这是正确的选择。

我不确定,但我认为评估有误。我编译并运行了该程序,它确实打印了 3, 9, 0, 2, 1, 4, 5, 使用三个不同的编译器( Cpp.shhere 和本地 Mac OS X) .

程序是否因 LINE I 存在未定义行为?

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void printer(int i) {
cout << i << ", ";
}
int main() {
int mynumbers[] = { 3, 9, 0, 2, 1, 4, 5 };
vector<int> v1(mynumbers, mynumbers + 7);
copy(mynumbers, mynumbers + 7, v1.end());//LINE I
for_each(v1.begin(), v1.end(), printer);//LINE II
return 0;
}

最佳答案

是的,是UB。

std::copy 要做的第一件事是取消引用 v1.end(),然后这样做 causes undefined behavior .

关于c++ - 使用具有未定义行为的(STL)拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439111/

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