C++ স্ট্যান্ডার্ড লাইব্রেরিতে কিছু ট্রান্সফর্মেশন অ্যালগরিদম রয়েছে যা কনটেইনারের উপাদানগুলির সাথে বিভিন্ন ধরনের কার্য সম্পাদন করতে সহায়তা করে। এই অ্যালগরিদমগুলির মধ্যে std::transform(), std::copy(), এবং std::replace() খুবই জনপ্রিয় এবং সাধারণভাবে ব্যবহৃত হয়। নিচে তাদের ব্যাখ্যা এবং উদাহরণ দেওয়া হলো:
১. std::transform()
std::transform() একটি অ্যালগরিদম যা কনটেইনারের উপাদানগুলোর ওপর একটি ফাংশন প্রয়োগ করে এবং ফলস্বরূপ নতুন ডেটা প্রদান করে। এই অ্যালগরিদমটি একটি রেঞ্জে একটি নির্দিষ্ট ফাংশন প্রয়োগ করার জন্য ব্যবহৃত হয়, যা কনটেইনারের সকল উপাদানে পরিবর্তন আনে।
বৈশিষ্ট্য:
std::transform()দুটি রেঞ্জ গ্রহণ করে (একটি ইনপুট রেঞ্জ এবং একটি আউটপুট রেঞ্জ) এবং একটি নির্দিষ্ট অপারেশন (ফাংশন বা ল্যাম্বডা) প্রয়োগ করে।- এটি মূল কনটেইনারের ডেটা পরিবর্তন না করে, একটি নতুন কনটেইনারে পরিবর্তনগুলি রাখে।
উদাহরণ:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::vector<int> result(numbers.size());
// std::transform ব্যবহার করে প্রতিটি উপাদানে 10 যোগ করা
std::transform(numbers.begin(), numbers.end(), result.begin(), [](int x) { return x + 10; });
std::cout << "Transformed elements: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}আউটপুট:
Transformed elements: 11 12 13 14 15২. std::copy()
std::copy() একটি অ্যালগরিদম যা একটি রেঞ্জের উপাদানগুলো অন্য রেঞ্জে কপি করে। এটি মূল রেঞ্জের ডেটাকে অপর রেঞ্জে কপি করে, তবে এটি মূল ডেটাকে পরিবর্তন করে না।
বৈশিষ্ট্য:
- এটি দুটি রেঞ্জ নেয়: একটি ইনপুট রেঞ্জ এবং একটি আউটপুট রেঞ্জ।
- কপি অপারেশনটি শুধুমাত্র উপাদানগুলিকে কপি করে, মূল কনটেইনারের ডেটাকে পরিবর্তন না করে।
উদাহরণ:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::vector<int> result(5);
// std::copy ব্যবহার করে numbers কনটেইনার থেকে result কনটেইনারে উপাদান কপি করা
std::copy(numbers.begin(), numbers.end(), result.begin());
std::cout << "Copied elements: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}আউটপুট:
Copied elements: 1 2 3 4 5৩. std::replace()
std::replace() একটি অ্যালগরিদম যা কনটেইনারের মধ্যে একটি নির্দিষ্ট মান খুঁজে সেই মানকে অন্য একটি মান দিয়ে প্রতিস্থাপন করে। এটি শুধুমাত্র কনটেইনারের বর্তমান ডেটাকে পরিবর্তন করে।
বৈশিষ্ট্য:
- এটি একটি মান এবং একটি প্রতিস্থাপন মান নেয় এবং কনটেইনারের মধ্যে সেই মানটি খুঁজে বের করে প্রতিস্থাপন করে।
- সাধারণত, এটি ঐ কনটেইনারের ডেটাকে পরিবর্তন করে, তবে কপি করা হয় না।
উদাহরণ:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 2};
// std::replace ব্যবহার করে সব 2 কে 10 দিয়ে প্রতিস্থাপন করা
std::replace(numbers.begin(), numbers.end(), 2, 10);
std::cout << "Replaced elements: ";
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}আউটপুট:
Replaced elements: 1 10 3 4 5 10অ্যালগরিদমগুলোর সংক্ষিপ্ত তুলনা
| অ্যালগরিদম | উদ্দেশ্য | ইনপুট রেঞ্জ | আউটপুট রেঞ্জ | মন্তব্য |
|---|---|---|---|---|
std::transform() | কনটেইনারের উপাদানগুলোর ওপর ফাংশন প্রয়োগ করা | ইনপুট রেঞ্জ | আউটপুট রেঞ্জ | কনটেইনারের উপাদানে পরিবর্তন করে, নতুন রেঞ্জে ফলাফল প্রদান করে |
std::copy() | একটি কনটেইনার থেকে অন্য কনটেইনারে উপাদান কপি করা | ইনপুট রেঞ্জ | আউটপুট রেঞ্জ | মূল কনটেইনারের উপাদানগুলো কপি করে, ডেটা পরিবর্তন করে না |
std::replace() | কনটেইনারের নির্দিষ্ট উপাদানগুলোকে অন্য মান দিয়ে প্রতিস্থাপন করা | ইনপুট রেঞ্জ | একই রেঞ্জ | একটি নির্দিষ্ট মান খুঁজে এবং প্রতিস্থাপন করে, মূল কনটেইনারের ডেটা পরিবর্তন করে |
উপসংহার
std::transform(): কনটেইনারের উপাদানগুলোর ওপর একটি নির্দিষ্ট ফাংশন প্রয়োগ করে নতুন রেঞ্জ তৈরি করতে ব্যবহৃত হয়।std::copy(): একটি কনটেইনার থেকে উপাদান কপি করতে ব্যবহৃত হয়।std::replace(): কনটেইনারের উপাদানগুলির মধ্যে একটি নির্দিষ্ট মান খুঁজে সেটি প্রতিস্থাপন করতে ব্যবহৃত হয়।
এই অ্যালগরিদমগুলো স্ট্যান্ডার্ড লাইব্রেরির গুরুত্বপূর্ণ টুলস যা ডেটা ম্যানিপুলেশন, কপি এবং পরিবর্তন করতে সহজ ও কার্যকর উপায় প্রদান করে।
Read more