Нашли этот код, делая обзор кода:Передача указателя вместо итератора для StD :: скопировать
std::array<uint, 10> expArray2 = {92,130,169,951,634,187,377,233,865,944};
copy(&expArray2[0], &expArray2[10], back_inserter(expected));
^~~~Is this Undefined behavior as ArrayIndexOutOfBoundAccess?
ли это так же, как (я предлагаю):
std::copy (expArray2, expArray2+10, expected.begin());
Мой коллега говорит 1.) оба одинаковы 2.) нет неопределенного поведения?
Я объяснил ему, что указатели и итераторы две different вещи, наряду с std::copy подписью:
template <class InputIterator, class OutputIterator>
OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result);
Может кто-то пожалуйста, подтвердить/объяснить это мне , если я не прав в любом месте?
Указатели являются своего рода итератора. Это даже упоминается в приведенной ссылке. – user2357112
Да, но моя главная проблема - arrayIndexOutOfBoundAccess. –
Кажется, что ядро этого вопроса касается выражения '& expArray2 [10]'. В этом случае это выглядит актуальным: http://stackoverflow.com/questions/988158/take-the-address-of-a-one-past-the-end-array-element-via-subscript-legal-by- – TheUndeadFish