কম্পিউটার টিউটোরিয়াল

C++ STL ব্যবহার করে প্রথম অ্যারেতে থাকা কিন্তু দ্বিতীয় অ্যারেতে নাও থাকা উপাদান বের করা


আমাদের দুটি অ্যারে আছে, কাজ হল দুটি অ্যারে কমপেয়ার করে প্রথম অ্যারেতে থাকা কিন্তু দ্বিতীয় অ্যারেতে নাও থাকা সংখ্যাগুলো বের করা, 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

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি −

  • এই প্রোগ্রামে আমরা সেই উপাদানগুলো বের করতে চাই যেগুলো প্রথম অ্যারেতে আছে কিন্তু দ্বিতীয় অ্যারেতে নেই।
  • এটি করার জন্য আমরা প্রথমে দুটি ভেরিয়েবল ইনিশিয়ালাইজ করব। এখন আমরা “find” নামে একটি ফাংশন তৈরি করব যেটি array 1-এ আছে কিন্তু array 2-এ নেই এমন উপাদানগুলো বের করবে।
  • ফাংশনে আমরা একটি ভেক্টর ডিক্লেয়ার করব (ভেক্টর ডাইনামিক অ্যারের মতো যা আটোমেটিক্যালি রিসাইজ হয় যখন উপাদান ইনসার্ট বা ডিলিট করা হয়) রেজাল্ট সংরক্ষণ করার জন্য এবং একটি ইটারেটর ডিক্লেয়ার করব ভেক্টর ট্রভার্স করার জন্য।
  • এখন আমরা অ্যারেগুলো সোর্ট করব এবং set_difference() মেথড ব্যবহার করে মিসিং উপাদানগুলো বের করব, এবং ভেক্টরটি রেজাল্ট অনুযায়ী রিসাইজ করব এবং ভ্যালুগুলো সংরক্ষণ করব এবং পরে সলিউশন প্রিন্ট করব।

স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)-এ, আমরা set_difference() মেথড ব্যবহার করে “array1-array2” বের করতে পারি। দুটি সেটের ডিফারেন্স তৈরি হয় সেই উপাদানগুলো দিয়ে যেগুলো প্রথম সেটে আছে কিন্তু দ্বিতীয় সেটে নেই। ফাংশন দ্বারা কপি করা এলিমেন্টগুলো সবসময় প্রথম রেঞ্জ থেকে আসে, একই অর্ডারে। উভয় রেঞ্জের এলিমেন্টগুলো ইতিমধ্যে অর্ডার্ড হওয়া উচিত।

সিনট্যাক্স

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++ ব্যবহার করে "আরও বড়" এবং "কম নয়" টাইপের কোয়েরি সমাধান

  2. C++-এ রিকারসিভ প্রোগ্রাম দিয়ে অ্যারেতে সর্বোচ্চ ও সর্বনিম্ন মান খুঁজুন

  3. C++-এ অ্যারেতে সবচেয়ে ছোট ও দ্বিতীয় ছোট এলিমেন্টের সর্বোচ্চ সম বের করার প্রোগ্রাম

  4. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম