Question

Не так давно я столкнулся с такой интересной штукой, как итераторы и сейчас мне стало интересно на сколько продуктивнее работать с итераторами чем с обычными переменными (массивами)?

Share this post


Link to post

1 answer to this question

  • 0

@Frosik1

О алгоритме итераторов (взято отсюда)

Спойлер

Алгоритм и его особенности
Дело в том, что при инициализации итератора вы создаёте всегда на одну ячейку больше. Эта ячейка будет содержать размер итератора (не всегда, см. выше); она также помогает определить границу итератора при итерировании.

Итерирование происходит так: сначала читается последний элемент, если он не равен размеру итератора, то значение в ячейке записывается. Затем происходит ещё одна итерация, теперь уже сравнивается размер и значение элемента массива с индексом записанного числа и так много раз, пока значение элемента не будет равно размеру итератора. Поэтому вы не можете указывать числа больше размера итератора или меньше нуля, т.к. это нарушит алгоритм и вызовет ошибки.

image.php?di=85FQ

Как видим, все остальные ячейки заполняются числами больше размера массива, это делается для того, чтобы поместить в последнюю ячейку именно размер.

 

Насчет производительности, то тут уже зависит от конкретной ситуации. 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Леон111
      By Леон111
      Здравствуйте, столкнулся с проблемой что при компиляции мода мне выскакивает pawnocc системная ошибка. Скачивал этот же мод тогда, но у меня не было проблем.
      Я скачивал другой мод который тоже компилировался но теперь выдаёт ошибку. Не знаю по какой причине перестало работать. Скачал уже все возможные visual c ++.
       
    • JAFAR
      By JAFAR
      Подключаю PawnRaknet и сервер не запускается вообще плагин версии 1.4.1
      В console пишет:
      В моде подключал так его:
      #include <a_samp> #include <Pawn.RakNet> #include <Pawn.CMD> #include <streamer> #include <sampvoice> #include <a_mysql> #include <sscanf2> #include <a_mail> //#include <crashdetect> #include <fmt> #include <CRP> #include <fix_Kick> #include <foreach> #include <cef>