Мазмунга өтүү

STL алгоритмдери жана итераторлору

Сабактын башталышы

STL алгоритмдери жана итераторлору

Циклдин коду азыраак, ниет ачыгыраак

Негизги идея: Стандарттык шаблондор китепканасы (STL) маалымат менен иштөөнү үч биргелешкен бөлүккө бөлөт: контейнерлер маалыматты сактайт, итераторлор ага көрсөтөт, ал эми <algorithm> ичиндеги алгоритмдер ишти аткарат. Итераторлор - желим: std::sort итераторлор менен гана сүйлөшкөндүктөн, ошол эле алгоритм vector да, array да, кадимки Си массиви да үстүнөн иштейт.
Аягында сиз мыналарды жасай аласыз:
  • контейнер / итератор / алгоритм бөлүнүшүн түшүндүрүү,
  • жарым ачык [begin, end) диапазонун туура колдонуу,
  • итератордун беш категориясын жана ар бири эмнеге уруксат берерин атоо,
  • sort, find, count_if, transform жана accumulate лямбдалар менен чакыруу,
  • C++20дун ranges ошол эле кодду кыскараак жана коопсузураак кылган жерлерди тааныу.

1. Бирге туташкан үч бөлүк

STLге чейин ар бир тапшырма үчүн өзүнчө цикл жазчу элеңиз: бири иреттөө үчүн, экинчиси издөө үчүн, үчүнчүсү кошуу үчүн. STL муну кайра колдонула турган бөлүктөргө ажыратат. std::sort сыяктуу алгоритм кантип иреттөөнү билет, бирок маалымат кайда жатканын билбейт. Итератор - көрсөткүчкө окшош кичине объект: элементти окуу үчүн аны *it аркылуу баштапкы маанисине жеткиресиз, ++it аркылуу алдыга жылдырасыз. std::vector сыяктуу контейнер сизге итераторлорду begin() жана end() аркылуу берет.

Пайдасы - кайра колдонуу: алгоритмди бир жолу жазыңыз, ал туура түрдөгү итераторду сунуштаган каалаган контейнер менен иштейт. Ошондуктан STL кичине көрүнөт, бирок ушунчалык көп нерсени жасайт.

Контейнер vector, array, list... begin() end() Итераторлор *it ++it Алгоритм sort, find... берет башкарат Бир алгоритм, көп контейнер - итераторлор жалпы келишим.
Контейнерлер итераторлорду берет; алгоритмдер ошол итераторлор аркылуу иштейт.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө