परिचय
transform फ़ंक्शन C++ STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) में मौजूद है। इसका उपयोग करने के लिए हमें <algorithm> हेडर फाइल शामिल करनी होती है। यह फ़ंक्शन सभी एलिमेंट्स पर एक ऑपरेशन करने के लिए उपयोग किया जाता है। उदाहरण के लिए, यदि हम एक ऐरे के प्रत्येक एलिमेंट का वर्ग निकालकर दूसरे ऐरे में स्टोर करना चाहते हैं, तो हम transform() फ़ंक्शन का उपयोग कर सकते हैं।
transform फ़ंक्शन के दो मोड
- यूनरी ऑपरेशन मोड - एक ऑपरेंड पर ऑपरेशन
- बाइनरी ऑपरेशन मोड - दो ऑपरेंड्स पर ऑपरेशन
यूनरी ऑपरेशन मोड
इस मोड में फ़ंक्शन केवल एक ऑपरेटर (या फ़ंक्शन) लेता है और आउटपुट में बदल देता है।
उदाहरण: ऐरे के प्रत्येक एलिमेंट का वर्ग
#include <iostream>
#include <algorithm>
using namespace std;
int square(int x) {
return x * x;
}
int main() {
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int res[10];
transform(arr, arr + 10, res, square);
for (int i = 0; i < 10; i++) {
cout << res[i] << "\n";
}
return 0;
}
आउटपुट
1 4 9 16 25 36 49 64 81 100
बाइनरी ऑपरेशन मोड
इस मोड में यह दिए गए डेटा पर बाइनरी ऑपरेशन कर सकता है। यदि हम दो अलग-अलग ऐरे के एलिमेंट्स को जोड़ना चाहते हैं, तो हमें बाइनरी ऑपरेटर मोड का उपयोग करना होगा।
उदाहरण: दो ऐरे के संबंधित एलिमेंट्स का गुणन
#include <iostream>
#include <algorithm>
using namespace std;
int multiply(int x, int y) {
return x * y;
}
int main() {
int arr1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr2[10] = {54, 21, 32, 65, 58, 74, 21, 84, 20, 35};
int res[10];
transform(arr1, arr1 + 10, arr2, res, multiply);
for (int i = 0; i < 10; i++) {
cout << res[i] << "\n";
}
return 0;
}
आउटपुट
54 42 96 260 290 444 147 672 180 350
मॉडर्न C++ में लैम्ब्डा का उपयोग
C++11 और बाद के संस्करणों में, हम फ़ंक्शन पॉइंटर्स के बजाय लैम्ब्डा एक्सप्रेशन्स का उपयोग कर सकते हैं:
// यूनरी ऑपरेशन के साथ लैम्ब्डा
transform(arr, arr + 10, res, [](int x) { return x * x; });
// बाइनरी ऑपरेशन के साथ लैम्ब्डा
transform(arr1, arr1 + 10, arr2, res, [](int x, int y) { return x * y; });