সি++ স্ট্যান্ডার্ড লাইব্রেরিতে অ্যালগরিদমগুলোকে মূলত দুইটি প্রধান শ্রেণীতে ভাগ করা যায়: Non-modifying algorithms এবং Modifying algorithms। এই শ্রেণীবিভাগগুলো মূলত তাদের কনটেইনারের উপাদানগুলোর ওপর প্রভাবের ওপর ভিত্তি করে করা হয়। Non-modifying অ্যালগরিদম উপাদানগুলো পরিবর্তন করে না, বরং এগুলো পরীক্ষা, গণনা, বা অন্বেষণ করে। Modifying অ্যালগরিদম উপাদানগুলো পরিবর্তন করে বা নতুনভাবে সাজায়।
Non-modifying অ্যালগরিদম কনটেইনারের উপাদানগুলো পরিবর্তন না করেই এগুলোর ওপর বিভিন্ন কার্য সম্পাদন করে। এদের মূলত ডেটা যাচাই, খোঁজা, এবং গণনার জন্য ব্যবহার করা হয়।
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// for_each অ্যালগরিদম ব্যবহার করে প্রতিটি উপাদান প্রিন্ট করা
std::for_each(numbers.begin(), numbers.end(), [](int n) { std::cout << n << " "; });
// count অ্যালগরিদম ব্যবহার করে সংখ্যা গণনা করা
int count_of_3 = std::count(numbers.begin(), numbers.end(), 3);
std::cout << "\nCount of 3: " << count_of_3 << std::endl;
return 0;
}
এখানে for_each
এবং count
অ্যালগরিদম ব্যবহার করে কনটেইনারের উপাদানগুলো পরীক্ষা করা হয়েছে, কিন্তু কোনো উপাদান পরিবর্তন করা হয়নি।
Modifying অ্যালগরিদম কনটেইনারের উপাদানগুলো পরিবর্তন বা নতুনভাবে সাজানোর জন্য ব্যবহৃত হয়। এদের মাধ্যমে কনটেইনারের ডেটার স্ট্রাকচার পরিবর্তন, এলিমেন্টের স্থান পরিবর্তন, নতুন এলিমেন্ট যোগ ইত্যাদি করা যায়।
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {3, 1, 4, 1, 5, 9, 2};
// sort অ্যালগরিদম ব্যবহার করে ভেক্টরকে সাজানো
std::sort(numbers.begin(), numbers.end());
// reverse অ্যালগরিদম ব্যবহার করে ভেক্টরকে উল্টে দেয়া
std::reverse(numbers.begin(), numbers.end());
// replace অ্যালগরিদম ব্যবহার করে 1 মানগুলোকে 10 দ্বারা প্রতিস্থাপন করা
std::replace(numbers.begin(), numbers.end(), 1, 10);
// পরবর্তীতে ভেক্টরের উপাদানগুলো প্রিন্ট করা
for (int n : numbers) {
std::cout << n << " ";
}
return 0;
}
উপরের উদাহরণে sort
, reverse
, এবং replace
অ্যালগরিদমগুলো ব্যবহার করা হয়েছে যা কনটেইনারের উপাদানগুলো পরিবর্তন বা নতুনভাবে সাজাতে সহায়ক।
for_each
, find
, count
, equal
, ইত্যাদি।sort
, replace
, remove
, fill
, ইত্যাদি।এই অ্যালগরিদমগুলো ব্যবহার করে C++ এ ডেটা প্রসেসিংকে সহজ করা যায় এবং প্রোগ্রামিংয়ে উচ্চমানের কার্যকারিতা নিশ্চিত করা যায়।
Read more