Безопасен ли данный код.
#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.
Сравнивать указатели можно любые (лишь бы сравнимые :)). Разыменовывать нельзя - но вы этого и не делаете :)
Заметим в скобках, что ваш код - по сути обычная работа с итераторами, именно так, как она обычно реализуется - пока итератор не сравняется с итератором, указывающим за конец контейнера.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Visual Studio 2010 на попытку создать свойство у класса пишет:
Есть кнопка в ob_panelui - on_pB_Switch_clicked и элемент в mainwindow
Стоит задача, водится строка, при выводе должно быть две строки, одна выводит символы только верхнего регистра, вторая только нижнегоНачал...