Tiplarni dinamik tarzda




Download 1,83 Mb.
bet24/131
Sana13.05.2024
Hajmi1,83 Mb.
#228405
1   ...   20   21   22   23   24   25   26   27   ...   131
Bog'liq
Tiplarni dinamik tarzda

iterator ( iterator ) bu – const value_type ko‘rsatuvchi domiy ikki tomnlama iterator. Aniq tipni belgilash realizatsiya qilishga bog‘liq va Allocatorda aniqlanadi.
sonst_iterator - ham iterator ( iterator ) kabidir.
size_type - ishorasiz butun tip, Aniq tipni belgilash realizatsiya qilishga bog‘liq va Allocatorda aniqlanadi.
difference_type - ishorali butun tip, Aniq tipni belgilash realizatsiya qilishga bog‘liq va Allocatorda aniqlanadi.
Elementlarni qo‘shishi insert() funksiyasi tomonidan amalga oshiriladi va bu funksiyaning bir nechta variantlari mavjud:
- juft iteratorlarni kitirishda intervaldan qiymat qo‘shish;


- qo‘yish mumkin bo‘lgan joyga ko‘rsatish orqali bitta qiymat qo‘shish (agar yangi element bevosita oldin pozitsiyani egallasa, o‘rnatish o‘zgarmas vaqt mobaynida amalga oshiriladi);


- berilgan qiymatni qo‘shish (asosiy usul);




Oxirgi variant insert funksiyasi bir juftli (iterator, Boolean) qaytaradi. Juftlikdagi birinchi element qo‘shish joyni yoki topilgan qiymatini, ikkinchi joylashtirilgan qiymatini qo‘shish bajarilganligi (true) yoki qo‘shish vaqtida to‘plamda borligini (flase) bildiradi.


Elementlarni o‘chirish erase funksiyasi orqali amalga oshiriladi. Bu funksiya qiymat yoki berilgan elementlar to‘plami yoki iterator yoki iteratorlar intervallari qabul qiladi.




(1)

size_type erase (const value_type& val);




(2)

void erase (iterator position);

(3)

void erase (iterator first, iterator last);

Birinchi parametr elementni o‘chiradi, qolgan ikka parametrlar elementni ko‘rsatadigan iterator qaytaradi. Birinchi variant o‘chirilgan elementlarning sonini beradi (set bo‘lsa, 1 yoki 0 qiymat beradi).


3.2-dastur. Set to‘plamga elementlarni qo‘shish.


// created by MBBahodir #include "stdafx.h" #include #include
using namespace std;

void erase_subs(set &s, const int &subs)


{
set::iterator p, pe, pd; p = s.begin(), pe = s.end();

while (p != pe)


{
if (p == s.find(subs)) p = s.erase(p);
else
++p;
}
}

int main ()


{
set myset; set::iterator it;
pair::iterator,bool> ret;

for (int i=1; i<=5; ++i) myset.insert(i*10); ret = myset.insert(20);


if (ret.second == false) it=ret.first;

myset.insert (it,25); myset.insert (it,24); myset.insert (it,26);


int myints[] = {5,10,15,60,28};



myset.insert(myints,myints+5);

cout << "myset contains after insert:";


for (it=myset.begin(); it!=myset.end(); ++it) cout << ' ' << *it;
cout << '\n';

// set toʻplam tltmentlarini oʻchirish it = myset.begin();


++it; myset.erase (it); myset.erase (40);
it = myset.find (60); myset.erase (it, myset.end());

cout << "myset contains after erase :";


for (it=myset.begin(); it!=myset.end(); ++it) cout << ' ' << *it;
cout << '\n'; erase_subs(myset,24);
cout << "myset contains after erase_subs :"; for (it=myset.begin(); it!=myset.end(); ++it)
cout << ' ' << *it; cout << '\n'; system("pause"); return 0;
}




3.2-dastur. Output

myset contains after insert: 5 10 15 20 24 25 26 28 30 40 50 60
myset contains after erase : 5 15 20 24 25 26 28 30 50
myset contains after erase_subs : 5 15 20 25 26 28 30 50



Download 1,83 Mb.
1   ...   20   21   22   23   24   25   26   27   ...   131




Download 1,83 Mb.