MaxLevs
@MaxLevs

В чём смысл этой конструкции?

Гулял по Хабру и наткнулся на этот код.
int arr[] = {1,2,3};
std::for_each(&arr[0], &arr[0]+sizeof(arr)/sizeof(arr[0]), [](int n) {std::cout << n << std::endl;});

auto is_odd = [](int n) {return n%2==1;};
auto begin = &arr[0];
auto end = &arr[0]+sizeof(arr)/sizeof(arr[0]);
auto pos = std::find_if(begin, end, is_odd);
if(pos != end)
  std::cout << *pos << std::endl;


В чём смысл &arr[0]? Насколько я понял, здесь просто разыменовывается указатель на первый элемент массива, а затем сразу же берется его адрес. Почему нельзя просто написать arr и получить всё тоже самое?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
coremission
@coremission
Профессиональный программист игр.
Возможно писали универсальный код, который должен подойти и для std::vector, а не только для массива.

И не везде можно заменить, ведь в конце где деление sizeof(arr[0]) не то же самое, что sizeof(arr).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы