В оценке я выбрал опцию ошибка времени выполнения в LINE I .
Не было такой опции, как Неопределенное поведение , хотя я думал, что это будет правильный выбор.
Я не уверен, но считаю, что в оценке есть ошибка. Я скомпилировал и запустил программу, и она действительно печатает 3, 9, 0, 2, 1, 4, 5,
с тремя разными компиляторами ( Cpp.sh , здесь и локально в 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;
}