Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में transform() फ़ंक्शन

परिचय

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; });
  1. - C++ में फंक्शन को ऐरे पास करना

    C++ संपूर्ण ऐरे को फंक्शन में तर्क के रूप में पास करने की अनुमति नहीं देता। हालांकि, आप ऐरे के नाम को बिना इंडेक्स के निर्दिष्ट करके ऐरे के पॉइंटर को पास कर सकते हैं। यदि आप एकल-आयामी ऐरे को फंक्शन में तर्क के रूप में पास करना चाहते हैं, तो आपको फंक्शन औपचारिक पैरामीटर को निम्नलिखित तीन तरीकों में

  1. - C++ फंक्शन में 2D ऐरे पास करना

    ऐरे को फंक्शन में तर्क के रूप में पास किया जा सकता है। इस प्रोग्राम में, हम इसे फंक्शन में पास करके 2 डायमेंशनल ऐरे के तत्वों को प्रदर्शित करेंगे। एल्गोरिदम Begin 2D ऐरे n[][] को फंक्शन show() में पास किया जाता है। फंक्शन show() को कॉल करें, ऐरे n (n) को नेस्टेड फॉर लूप का उपयोग करके ट्रैवर

  1. - C++ फ़ंक्शन में ऐरे पास करना

    C++ पूरे ऐरे को फ़ंक्शन में आर्गुमेंट के रूप में पास करने की अनुमति नहीं देता। हालांकि, आप ऐरे के नाम को बिना इंडेक्स के निर्दिष्ट करके ऐरे का पॉइंटर पास कर सकते हैं। यदि आप सिंगल-डायमेंशन ऐरे को फ़ंक्शन में आर्गुमेंट के रूप में पास करना चाहते हैं, तो आपको फ़ंक्शन फॉर्मल पैरामीटर को निम्नलिखित तीन