Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет330/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   326   327   328   329   330   331   332   333   ...   466
Байланысты:
pavlovskaia-jogargy-dengeili


тақырыптық файлын-
да сипатталған. Стандартты контейнерлерді қолдану кезінде бұл файл авто-
матты түрде іске қосылады. 
Итераторлар тұрақтылық болуы мүмкін. Тұрақтылық итераторлар 
контейнердің соған сəйкес элементтерінің мəндерін өзгерту қажеттілігі 
болмаған кезде қолданылады.


358
Итератор 
жарамды (ол қандай да бір элементке нұсқап тұрса) немесе 
жарамсыз болуы мүмкін. Итератор келесі жағдайларда жарамсыз болып 
қалуы мүмкін:

итератор инициалданған жоқ;

ол байланысқан контейнер өлшемдері өзгерген немесе ол жойылған;

итератор тізбектің соңына нұсқайды.
Тізбектің соңы оның соңғы элементінен кейін орналасқан элементке 
нұсқауыш түрінде бейнеленеді. Мұндай нұсқауыш əрқашанда бар болады. 
Осындай тəсілді қолдану бос тізбекті ерекше жағдай ретінде қарастырмауға 
мүмкіндік береді. «Нөлдік итератор» ұғымы болмайды. 
Итераторлар өздері нұсқайтын объектілермен жұмыс істеу үшін (мыса-
лы, контейнер элементінің мəнін алу үшін) қолданылатындықтан, соларға 
сəйкес типтерді анықтау қажет. Ол үшін 

тақырыптық файлында 
iterator_traits
шаблоны (
trait
ағылшын тілінен аударғанда — ортақ си-
паты) анықталған.
template struct iterator_traits{
typedef typename Iter::difference_type difference_type;
typedef typename Iter::value_type value_type;
typedef typename Iter::pointer pointer;
typedef typename Iter::reference reference;
typedef typename Iter::iterator_category 
iterator_category;
};
Мысалдағы 
typename
түйінді сөзі компилятор 
Iter
сөзін типтің 
атауы ретінде тануы үшін қажет. 
iterator_category
– бұл итератордың 
типі, ол итератордың қандай операцияларды қолдайтынын анықтайды. 
difference_type
типі екі итератордың арасындағы айырманы өрнектеу 
қызметін атқарады. 
Тақырыптық файлда келесідей итераторлар типтері сипатталған:


Достарыңызбен бөлісу:
1   ...   326   327   328   329   330   331   332   333   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет