1. Kiritish iteratorlar (input_iterator) tenglik, nomini o‘zgartirish va inkrementa operatsiyalarni qo‘llaydi.
• ==, !=, *i, ++i, i++, *i++
Kiritish iteratsiyasining maxsus xolati istream_iterator dan iborat.
2. Chiqarish iteratorlar (output_iterator) o‘zlashtirish operatorning chap tarafidan imkon bo‘lgan isimning o‘zgartirish va inkremental operatsiyalar qo‘llanadi.
• ++i, i++, *i=t, *i++=t
Chiqarish iteratsiyasining maxsus xolati ostream_iterator.
3. Bitta yo‘nalishdagi iteratorlar (forward_iterator)
kiritish/chiqarish operatsiyalarning barchasini qo‘llaydi, bundan tashqari chegarasiz o‘zlashtirishning imkonini beradi.
• ==, !=, =, *i, ++i, i++, *i++
4. Ikki yo‘nalishdagi iteratorlar (biderectional_iterator) forward-iteratorlarning barcha xususiyatlariga ega, bundan tashqari, konteynerni ikkita yo‘nalishi bo‘yicha o‘tish imkonini beradigan qo‘shimcha dekremental (--i, i--, *i--) operatsiyasiga ega.
5. Ixtiyoriy ruxsatga ega bo‘lgan iteratorlar (random_access_iterator) biderectional-iteratorlarning barcha xususiyatlariga ega, bundan tashqari solishtirish va manzil arifmetikasi operatsiyalarni qo‘llaydi.
i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1i2, i1>=i2
Shuningdek, STLda teskari iteratorlar (reverse iterators) qo‘llaniladi. Ketma-ketlikni teskari yo‘nalishda o‘tuvchi ikki yo‘nalishli yoki ixtiyoriy ruxsatga ega bo‘lgan iteratorlar teskari iteratoralar bo‘lishi mumkin.
Misol. n ta haqiqiy sonli ro’yxat hosil qiling va uning barcha elementlari yig’indisini toping.
Dastur kodi:
#include
#include
using namespace std;
int main()
{
int s=0,n;
cout<<"n=";cin>>n;
listl;
l.push_back(0);
for(int i=1;i
{
l.push_back(i);
}
for(list::iterator it=l.begin();it!=l.end();it++)
{
s+=*it;
}
cout<
}
Dostları ilə paylaş: |