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

सी ++ में एसटीएल का उपयोग करके पहली सरणी में मौजूद तत्व और दूसरे में नहीं

हमारे पास दो सरणियाँ हैं, कार्य दो सरणियों की तुलना करना और पहली सरणी में मौजूद संख्याओं को खोजना है, लेकिन दूसरी सरणी में नहीं, C++ में मानक टेम्पलेट लाइब्रेरी (STL) का उपयोग करना।

उदाहरण

Input: array1[ ] = {1,2,3,4,5,7}
array2[ ] = {2,3,4,5,6,8}
Output: 1, 7
Input: array1[ ] = {1,20,33,45,67}
array2[ ] = {1,12,13,114,15,13}
Output: 20,33,45,67

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है इस प्रकार है -

  • इस कार्यक्रम में हम उन तत्वों को खोजना चाहते हैं जो पहली सरणी में मौजूद हैं लेकिन दूसरी सरणी में मौजूद नहीं हैं।
  • ऐसा करने के लिए हम सबसे पहले दो वेरिएबल को इनिशियलाइज़ करते हैं। अब हम उन तत्वों को खोजने के लिए "ढूंढें" नामक एक फ़ंक्शन बनाएंगे जो सरणी 1 में हैं और सरणी 2 में नहीं हैं।
  • फ़ंक्शन में हम परिणाम को स्टोर करने के लिए एक वेक्टर घोषित करेंगे (वेक्टर गतिशील सरणियों के समान होते हैं, जब कोई तत्व डाला या हटा दिया जाता है।)
  • अब हम सरणियों को सॉर्ट करेंगे और लापता तत्वों को खोजने के लिए set_difference ( ) विधि का उपयोग करेंगे, और परिणाम के अनुसार वेक्टर का आकार बदलेंगे और मूल्यों को संग्रहीत करेंगे और फिर समाधान को प्रिंट करेंगे

स्टैंडर्ड टेम्प्लेट लाइब्रेरी (STL) में, हम "array1-array2" खोजने के लिए set_difference () विधि का उपयोग कर सकते हैं। दो समुच्चयों का अंतर उन तत्वों से बनता है जो पहले सेट में मौजूद होते हैं, लेकिन दूसरे में नहीं। फ़ंक्शन द्वारा कॉपी किए गए तत्व हमेशा उसी क्रम में पहली श्रेणी से आते हैं। दोनों श्रेणियों के तत्वों का पहले से ही आदेश दिया जाएगा।

सिंटैक्स

set_difference() के लिए सिंटैक्स है -

OutputIterator set_difference (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result);

एल्गोरिदम

Start
Step 1-> Create function for finding missing elements
   void find(int array1[], int array2[], int x, int y)
   Declare a vector which stores the result as vector<int> v(x + y)
   Declare an iterator traverse the vector as
   vector<int>::iterator it
   Sort the arrays
   sort array1 and sort array2
End
   Find the missing elements
   diff = set_difference(array1, array1 + x, array2, array2 + y, v.begin())
   resize the vector to the existing count
   v.resize(diff - v.begin())
   print the elements present in array1[] and not in array2[]
   for (diff = v.begin()
      diff != v.end()
      ++diff
      Print *diff
   End
Step 2-> In main()
   Declare array as int array1and int array2
   Declare variable x and y to calculate the size of array1 and array 2 as
   int x = size of array1 and int y = size of array2
Call the function as find(array1, array2, x, y)

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int main() {
   int array1[] = { 1, 2, 3, 4, 5, 7 };
   int array2[] = { 2, 3, 4, 5, 6, 8 };
   int x = sizeof(array1) / sizeof(array1[0]);
   int y = sizeof(array2) / sizeof(array2[1]);
   find(array1, array2, x, y);
   return 0;
}
// Creating function named “find” for finding missing elements
void find(int array1[], int array2[],
int x, int y) {
   // Declaring a vector which stores the result
   vector<int> v(x + y);
   // Declaring an iterator traverse the vector
   vector<int>::iterator it;
   // Sorting the arrays
   sort(array1, array1 + x);
   sort(array2, array2 + y);
   // Finding the missing elements
   diff = set_difference(array1, array1 + x, array2, array2 + y, v.begin());
   //resizing the vector to the existing count
   v.resize(diff - v.begin());
   cout << "The elements present in array1[] and not in array2[]:”;
   for (diff = v.begin(); diff != v.end(); ++diff)
   cout << *diff << " ";
   cout << endl;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

The elements present in array1[] and not in array2[]: 1,7

  1. C++ में सरणी के न्यूनतम और अधिकतम तत्वों को खोजने के लिए पुनरावर्ती कार्यक्रम

    हमें इनपुट के रूप में एक पूर्णांक सरणी Arr[] दी गई है। लक्ष्य पुनरावर्ती विधियों का उपयोग करके सरणी के बीच अधिकतम और न्यूनतम तत्वों को खोजना है। चूंकि हम रिकर्सन का उपयोग कर रहे हैं, हम पूरे सरणी को तब तक पार करेंगे जब तक हम लंबाई =1 तक नहीं पहुंच जाते हैं, फिर ए [0] लौटाते हैं जो बेस केस बनाता है।

  1. C++ में किसी सरणी में सबसे छोटा और दूसरा सबसे छोटा का अधिकतम योग

    इस ट्यूटोरियल में, हम एक प्रोग्राम के बारे में चर्चा करेंगे जो किसी एरे में सबसे छोटे और दूसरे सबसे छोटे का अधिकतम योग ज्ञात करे। इसके लिए हमें पूर्णांकों वाली एक सरणी प्रदान की जाएगी। हमारा काम सरणी के हर संभावित पुनरावृत्ति में सबसे छोटे और दूसरे सबसे छोटे तत्वों का अधिकतम योग खोजना है। उदाहरण #i

  1. यह जांचने के लिए प्रोग्राम कि कोई ऐरे पालिंड्रोम है या C++ में STL का उपयोग नहीं कर रहा है

    एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह पता लगाना है कि सरणी एक पैलिंड्रोम है या नहीं। हमें बताए गए कार्य को C++ में STL का उपयोग करके करना है। सी ++ में एसटीएल (स्टैंडर्ड टेम्प्लेट लाइब्रेरी) की एक विशेषता है, यह सी ++ टेम्प्लेट क्लासेस का एक सेट है जो डेटा संरचनाओं और ढेर,