Iteratorlar va ularning qo‘llanilishi. Xotirani taqsimlovchilar va ularga



Yüklə 149,63 Kb.
səhifə2/6
tarix07.01.2024
ölçüsü149,63 Kb.
#201752
1   2   3   4   5   6
Iteratorlar va ularning qo‘llanilishi. Xotirani taqsimlovchilar

o cziashtirish
4 2 . s td ::c o p y ( s td ::is t r e am _ ite r a to r ( f in ) ,
s t d : : is t r e am _ ite r a to r ( ) , s td : : in s e r t e r ( v ,
v .e n d ( ) ) ) ;
4 3 . / / sart yoqdamida saralash
4 4 . s td ::s o r t ( v .b e g in ( ) , v .e n d () , comparator);
4 5 . / / copy algoritmidan foydalanib, faylga ma'Lumotlarni
yozish
4 6 . s td ::c o p y _ i f (v .b e g in ( ) , v .e n d () ,
s t d : : o s tr e am _ ite ra to r ( s td ::c o u t , "\n") ,
p r ed ic a te (2 0 , 2 5 ) ) ;
4 7 . s td ::c o p y (v .b e g in ( ) , v .e n d () ,
s t d : : o s tr e am _ ite ra to r ( fo u t , "\n") ) ;
48 . / / s td ::c o p y (v .b e g in ( ) , v .e n d ( ) ,
s td ::o s tre am _ ite ra to r< T a la b a > (co u t, "\ n " ) ) ;
49 . }
50. in t main(){
51. F ile _ o u t_ in ( ) ; g e t c h a r ( ) ; }
Dastur natijasi:
Natijalar oynasi
Salimov Nuriddin 21
Sharipov Komil 21
Mallayev Oybek 22
Holiqov Abdulla 23
Abdullayev Jalil 24
Input.txt fayli fayl
Mallayev Oybek 22
Salimov Nuriddin 21
Holiqov Abdulla 23
Abdullayev Jalil 24
Sharipov Komil 21
Yuqorida keltirilgan algoritmalarning baza birlariga misollar keltiramiz:
2.4.2. reverse_copy algoritmiga misol:
1 . #include " s td a fx .h "
2 . / / reverse_copy ga m iso lla r
3. #include / / s td ::c o u t
4 . #include / / s td ::rev e r s e _ co p y
5. #include / / s td ::v e c to r
6 . using namespace s td ;
7 . in t main ( ) {
8 . in t Int_m a ssiv [] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } ;
9 . v e c to r< i n t > myvector;
10. m y v e c to r .r e s iz e (9 ); / / jo y a jr a t i s h
11. reverse_copy (In t_m a ssiv , Int_massiv+9,
m y v e c to r.b eg in ());
1 2 . / / ta rk ib n i chop q i l i s h :
13. cout << "myvector t a r k i b i : " ;
14. fo r (v e c to r< i n t > : : i t e r a t o r it=m y v e c to r .b e g in ();
it!=m y v e c to r .e n d (); + + i t )
15. cout << f f << * i t ;
16. cout << f\nf ;
17. g e t c h a r ( ) ;
18. return 0 ;
19. }
Dastur natijasi: myvector tarkibi: 9 8 7 6 5 4 3 2 1
2.4.3. frnd(begin, end, value) algoritmiga misol:
1 . #include " s td a fx .h "
2 . / / find misol
3. #include / / s td ::c o u t
4 . #include / / s td ::f in d
5. #include / / s td ::v e c to r
6 . using namespace s td ;
7 . in t main ( ) {
8 . in t Int_m a ssiv [] = { 10, 20, 30, 40 } ;
9 . in t * p;
10. p = find (In t_m a ssiv , Int_massiv+4, 3 0 ) ;
11. i f (p != Int_massiv+4)
12. cout<<"Int_massiv da element to p ilg a n : " <<*p<13. e ls e
14. cout<<"Int_massiv da element topilmadi \n";
15. v e c to r myvector (In t_m a s s iv ,In t_m a s s iv + 4 );
16. v e c to r : : i t e r a t o r i t ;
17. i t = find (m y v e c to r.b eg in (), myvector.end(), 3 0 ) ;
18. i f ( i t != myvector.end())
19. cout<<"myvector da element to p i ld i : " << * i t < < f\nf ;
2 0 . e ls e
2 1 . cout << "myvector da element topilmadi \n";
2 2 . g e t c h a r ( ) ; return 0 ;
23. }
Dastur natijasi:
Int_massiv da element topilgan: 30
myvector da element topildi: 30
2.4.4. mismatch(a, a_end, b, b_end, eq) algoritmiga misol:
1 . #include " s td a fx .h "
2 . #include / / s td ::c o u t
3. #include / / std::mismatch
4 . #include / / s td ::v e c to r
5. #include < u t i l i ty > / / s td ::p a i r
6 . bool mypredicate ( in t i , in t j ) {
7 . return ( i = = j ) ; }
8 . using namespace s td ;
9 . in t main ( ) {
1 0 . v e c to r< i n t > myvector;
1 1 . fo r ( in t i = 1 ; i < 6 ; i+ + ) myvector.push_back ( i * 1 0 ) ;
12. / / myvector: 10 20 30 40 50
13. in t Int_m a ssiv [] = { 1 0 ,2 0 ,8 0 ,3 2 0 ,1 0 2 4 } ;
14. / / Int_massiv: 10 20 80 320 1024
15. p a ir< v e c to r< i n t > : : i t e r a t o r , in t *> mypair;
16. / / stand a rt taqqoslash yordamida:
17. mypair = mismatch (m y v e c to r.b eg in (), myvector.end(),
In t_m a ss iv );
18. cout << "B ir in c h i mos kelmaydigan e lem en tla r: " <<
*m y p a ir .f ir s t ;
19. cout << " va " << *mypair.second << f\nf ;
2 0 . + +m y p a ir .fir s t ; ++mypair.second;
2 1 . / / predikt taqqoslash yordamida:
2 2 . mypair = std::mismatch (m y p a ir .f ir s t , myvector.end(),
mypair.second, mypredicate);
23. cout << "Ik k in ch i mos kelmaydigan e lem en tla r: " <<
*m y p a ir .f ir s t ;
24. cout << " va " << *mypair.second << f\nf ;
25. g e t c h a r ( ) ; return 0 ;
26.}
Dastur natijasi:
Birinchi mos kelmaydigan elementlar: 30 va 80
Ikkinchi mos kelmaydigan elementlar: 40 va 320
1 . #include " s td a fx .h "
2 . #include / / s td ::c o u t
3. #include / / std::min_element,
std::max_element
4 . bool myfn(in t i , in t j ) { return i 5. s t ru c t myclass {
6 . bool o p e ra to r () ( in t i , in t j ) { return i 7 . } myobj;
8 . using namespace s td ;
9 . in t main ( ) {
10. in t Int_m a ssiv [] = { 3 , 7 , 2 , 5 , 6 , 4 , 9 } ;
1 1 . / / stand a rt taqqoslash yordamida:
12. cout << "Eng k ich ik element - " <<
*min_element(Int_massiv,Int_massiv+7) << f\nf ;
13. cout << "Eng k a tta element - " <<
*max_element(Int_massiv,Int_massiv+7) << f\nf ;
14. / / myfn funktsiy asidan komp s i f a t id a fo yd a lanish:
15. cout << "Eng k ich ik element " <<
*min_element(Int_massiv,Int_massiv+7,myfn) << f\nf ;
16. cout << "Eng k a tta element " <<
*max_element(Int_massiv,Int_massiv+7,myfn) << f\nf ;
17. / / obyekt s i f a t id a myobj-dan komp s i f a t id a
fo yd a lanish:
18. cout << "Eng k ich ik element " <<
*min_element(Int_massiv,Int_massiv+7,myobj) << f\nf ;
19. cout << "Eng k a tta element " <<
*max_element(Int_massiv,Int_massiv+7,myobj) << f\nf ;
2 0 . g e t c h a r ( ) ; return 0 ;
2 1 . }
Dastur natijasi:
Eng kichik element - 2
Eng katta element - 9
Eng kichik element 2
Eng katta element 9
Eng kichik element 2
Eng katta element 9
1 . #include " s td a fx .h "
2 . #include
3. #include
4 . #include
5. void myfunction ( in t i )
6 . s td ::c o u t << f f << i ;
7 . }
8 . s t ru c t myclass {
/ / s td ::c o u t
/ / s td ::fo r _ e a c h
/ / s td ::v e c to r
{ / / fu n c tio n :
/ / fun ction o b je c t type:
9 . void o p e ra to r () ( in t i ) { s td ::c o u t << f f << i ; }
1 0 . } myobject;
1 1 . using namespace s td ;
1 2 . in t main ( ) {
13. v e c to r myvector;
14. myvector.push_back(10);
15. myvector.push_back(20);
16. myvector.push_back(30);
17. cout << "myvector t a r k i b i : " ;
18. for_each (m y v e c to r.b eg in (), myvector.end(),
myfunction);
19. cout << f\nf ;
2 0 . cout << "myvector c o n ta in s :" ;
2 1 . for_each (m y v e c to r.b eg in (), myvector.end(), myobject);
2 2 . cout << f\nf ;
23. g e t c h a r ( ) ; return 0 ;
Dastur natijasi:
myvector tarkibi: 10 20 30
myvector contains: 10 20 30
2.4.7. replace(begin, end, old_val, new_val) algoritmiga misol:
1 . #include " s td a fx .h "
2 . #include / / s td ::c o u t
3. #include / / s td ::r e p la c e
4 . #include / / s td ::v e c to r
5. using namespace s td ;
6 . in t main ( ) {
7 . in t Int_m a ssiv [] = { 10, 20, 30, 30, 20, 10, 10, 20 } ;
8 . v e c to r myvector (In t_m a ssiv , Int_massiv+8 ) ;
24.}
9 . / / 10 20 30 30 20 10 10 20
10. rep la ce (m y v e c to r.b eg in (), myvector.end(), 20, 9 9 ) ;
11. / / 10 99 30 30 99 10 10 99
1 2 . cout << "myvector t a r k i b i : " ;
13. fo r (v e c to r : : i t e r a t o r it=m y v e c to r .b e g in ();
it!=m y v e c to r .e n d (); + + i t )
14. cout << f f << * i t ;
15. cout << f\nf ;
16. g e t c h a r ( ) ;
17. return 0 ;
18.}
Dastur natijasi: myvector tarkibi: 10 99 30 30 99 10 10 99
2.4.8. remove va remove_if(begin, end, pred) algorimiga misol:
1 . #include " s td a fx .h "
2 . #include / / s td ::c o u t
3. #include / / std::remove va remove_if
4 . bool IsOdd ( in t i ) { return ( ( i %2)==1); }
5. using namespace s td ;
6 . in t main ( ) {
7 . in t I n t _ m a s s iv [ ] = { 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 } ;
8 . in t * pbegin = Int_massiv; / / A
9 . in t * pend = Int_massiv+s iz e o f (In t_m a s s iv )/s iz e o f ( i n t ) ;
10. pend = remove_if (pbegin, pend, IsOdd);
11. cout << " remove_if dan keyin Range t r a k i b i : " ;
1 2 . fo r ( in t * p=pbegin; p!=pend; ++p)
13. cout << f f << *p; cout << f\nf ;
14. in t Int_massiv_2[] = { 3 , 2 , 3 , 4 , 3 , 6 , 7 , 3 , 9 } ;
15. pbegin = Int_massiv_2;
16. in t * pend_2 =
Int_massiv_2+s iz e o f (In t_m a s s iv _ 2 )/s iz e o f ( i n t ) ;
17. pend_2 = remove (pbegin, pend_2, 3 ) ;
18. cout << " remove dan keyin Range t r a k i b i : " ;
19. fo r ( in t * p=pbegin; p!=pend_2; ++p)
2 0 . cout << f f << *p; cout << f\nf ; }
Dastur natijasi:
remove_if dan keyin Range trakibi: 2 4 6 8
remove dan keyin Range trakibi: 2 4 6 7 9
1 . #include / / s td ::c o u t
2 . #include / / s td : :s o r t
3. #include / / s td ::v e c to r
4 . bool myfunction ( in t i , in t j ) { return ( i 5. s t ru c t myclass {
6 . bool o p e ra to r () ( in t i , in t j ) { return ( i 7 . myobject;
8 . using namespace s td ;
9 . in t main ( ) {
10. in t Int_m a ssiv [] = { 3 2 ,7 1 ,1 2 ,4 5 ,2 6 ,8 0 ,5 3 ,3 3 } ;
11. v e c to r myvector (In t_m a ssiv , Int_massiv+8 ) ;
12. / / 32 71 12 45 26 80 53 33
/ / stand art taqqoslash (operator <) yordamida:
13. so r t (m y v e c to r.b eg in (), m y v e c to r.b eg in ()+ 4 );
14. / / ( 1 2 32 45 71)26 80 53 33
15. / / funksiyadan foydalanib
16. so r t (m y v e c to r.b eg in ()+ 4 , myvector.end(), myfunction);
17. / / 12 32 45 71(26 33 53 80)
18. / / objectdan fo yd a lib
19. so r t (m y v e c to r.b eg in (), myvector.end(), myobject);
20. / / ( 1 2 26 32 33 45 53 71 80)
2 1 . / / e lem en tla rn i chop q i l i s h :
2 2 . cout << "myvector t a r k i t i b i : " ;
23. fo r (v e c to r : : i t e r a t o r it=m y v e c to r .b e g in ();
it!=m y v e c to r .e n d (); + + i t )
24. cout << f f << * i t ; cout << f\nf ; g e t c h a r ( ) ;}
Dastur natijasi:
myvector tarkitibi: 12 26 32 33 45 53 71 80
Laboratoriya mashg‘ulotini bajarish bo‘yicha variantlar.
Ushbu jadvaldagi vazifalar standart algoritmlardan foydalanilgan holda bajariladi.

Yüklə 149,63 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin