Mavzu: 5 amaliy mashg’ulot stl algoritmlari
sort() va reverse() algoritmlari
Download 147.37 Kb. Pdf ko'rish
|
12-13-AMALIY (1)
sort() va reverse() algoritmlari. Quyidagi misolda (-listing) butun
vektorni saralaymiz, tartiblangan elementlarni chiqaramiz va keyin ularni teskari tartibda chiqaramiz: #include #include #include using namespace std; int main() { vector vect.push_back(4); vect.push_back(8); vect.push_back(-3); vect.push_back(3); vect.push_back(-8); vect.push_back(12); vect.push_back(5); sort(vect.begin(), vect.end()); // vektor elementlarini tartiblash vector for (it = vect.begin(); it != vect.end(); ++it) // vektor elementlarini sikl va iterator yordamida ko'rsatish cout << *it << ' '; cout << '\n'; reverse(vect.begin(), vect.end()); // vektor elementlarini teskari tartiblash for (it = vect.begin(); it != vect.end(); ++it) // vektor elementlarini sikl va iterator yordamida ko'rsatish cout << *it << ' '; cout << '\n'; } Dasturni bajarish natijasi: -8 -3 3 4 5 8 12 12 8 5 4 3 -3 -8 E'tibor bering sort () algoritmi vektorlar bilan ishlamaydi. Vektorning o'ziga xos sort() usuli bor, bu holda u samaraliroq. for_each() – konteynerning barcha elementlari bilan ishlash. Uning ishlash tartibi -listingda berilgan dasturda keltirilgan. #include #include #include using namespace std; void show(int i) //Algoritmga uzatiladigan funksiya { cout << i << '\n'; } int main() { const size_t len = 5; int *arr = new int[len]{1,2,3,4,5}; // massivga ko'rsatgich (massiv emas!) for_each(begin(arr),end(arr),show); //xato! } for_each — bu modifikatsiyalanmagan algoritm (-listing) #include #include using namespace std; void summ(int &i, const int value){ i = i+value; } int main() { auto M = {1, 2, 3, 4, 5}; for_each(M.begin(),M.end(),summ); /* hech qanday qiymat o'tkazib bo’lmaydi, foreach faqat va faqat bitta parametrli funksiyani tanlaydi (endi summ ikkita parametrga ega). Bu ham xatolik */ } for_eachdan to’g’ri foydalanilgan dastur quyida keltirilgan (-listing) #include #include #include using namespace std; void doubleNumber(int& i) { i *= 2; } int main() { array for_each(arr.begin(), arr.end(), doubleNumber); for (int i : arr) { cout << i << ' '; } cout << '\n'; return 0; } Download 147.37 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling