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



Pdf көрінісі
бет331/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   327   328   329   330   331   332   333   334   ...   466
struct input_iterator_tag{}; 
struct output_iterator_tag{};
struct forward_iterator_tag: 
 public 
input_iterator_tag{}; 
struct bidirectional_iterator_tag: 
 public 
forward_iterator_tag{}; 
struct random_access_iterator_tag: 
 public 
bidirectional_iterator_tag{};
Итератордың типін итераторды қолданатын функцияның шаблонының па-
раметрлер тізімінде көрсетуге болады, бұл əрекет компиляция кезеңінде ба-
рынша тиімді жүзеге асыруды қамтамасыз ететін итератордың типін таңдау 
үшін жасалады, өйткені итератордың алуан түрлері үшін бір алгоритм əртүрлі 
тиімділікпен жүзеге асырылуы мүмкін. 


359
Қарапайым нұсқауыштар үшін олардың тиімділігін арттыру мақсатында 
iterator_traits
шаблонының специализациялары анықталған (шаблон-
дардың специализациялары туралы 238 б. жазылған):
template struct iterator_traits
 
typedef ptrdiff_t difference_type;
 
typedef T value_type; 
 
typedef T* pointer; 
 
typedef T& reference;
 
typedef random_access_iterator_tag iterator_category;
};
Екі нұсқауыштың айырмасы 
 
файлында анықталған стан-
дартты 
ptrdiff_t 
типінде болады. Осыған ұқсас шаблон специализациясы 
const T*
типі үшін де енгізілген.
Тек кездейсоқ қол жеткізу итераторлары ғана 
+
жəне  операцияларын 
сүйемелдейтін болғандықтан, кітапханада 
distance
жəне 
advance
функ-
циялары сипатталған. 
distance
функциясы контейнер элементтерінің 
арасындағы қашықтықты анықтау үшін қолданылады:


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




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

    Басты бет