Безопасен ли данный код.
#include <iostream>
int main(int argc, char* argv[] )
{
constexpr auto SIZE = 3;
int* a1 = new int[3];
a1[0] = 1;
a1[1] = 2;
a1[2] = 3;
int* first = a1;
int* last = a1 + SIZE;
for ( ; first != last; first++)
std::cout << *first;
return 0;
}
В конце последней итерации first вне диапазона, можно ли так сравнивать указатели. Что будет если first будет равен максимальному size_t.
Сравнивать указатели можно любые (лишь бы сравнимые :)). Разыменовывать нельзя - но вы этого и не делаете :)
Заметим в скобках, что ваш код - по сути обычная работа с итераторами, именно так, как она обычно реализуется - пока итератор не сравняется с итератором, указывающим за конец контейнера.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости