Что такое Предшественник элемента в массиве? Как мне это найти?

0

Я пытался Google, но напрасно.

Теги:
arrays

1 ответ

2

В C++ массивы хранятся в непрерывной памяти.

Это означает, что если у вас есть элемент x и вы знаете, что он внутри массива и что он не первый элемент массива, тогда предыдущий

*(&x - 1)

т.е. элемент, на который указывает адрес x после вычитания 1 (обратите внимание, что это работает, поскольку арифметика указателя в C++ рассматривает размер элемента, поэтому &x - 1 не указывает на байт раньше, а на элемент before).

  • 0
    Поскольку мы можем перегрузить operator& , мы должны использовать std::addressof .
  • 1
    @ Jarod42: кто переопределяет operator& вероятно, также будет иметь в коде #define else так что в любом случае будут проблемы :-)
Сообщество Overcoder
Наверх
Меню