C++ Container Class: पिछले Post में हमने जो Class Create की थी वह linklist Class एक Container Class का उदाहरण है। Container Classes का प्रयोग Data को Store (Contain) करने के लिए किया जाता है। आगे के अध्याय में हम इसके बारे में चर्चा करेंगे जब हम Standard Template Library को समझेंगे, जिसमें इसी प्रकार के कई और Containers जैसे कि vectors, lists, sets व deque हैं।
अब हम एक और Container Class जिसे SortedArray कहते हैं, के बारे में पढेंगे जो कि एक Array के विभिन्न Elements को Automatically Sorted Form में व्यवस्थित कर देता है। Sorting का मतलब इस बात पर आधारित है कि Array में किस प्रकार का Data Store किया गया है। हमारे उदाहरण में हमनें एक Employee Class के Objects के Pointers (Pointers to Objects) को Store किया है। हर Employee Object में Data के रूप में एक Employee Number है और Program में SortedArray Object ये निश्चित करता है कि क्या Pointers to Employee एक Increasing Employee Number के Format में Arrange हो गए हैं या नहीं।
जब हम किसी नए Employee Object को SortedArray में Insert करते हैं, तो इसका Pointer Automatically एक उचित Location पर Store हो जाता है। हमारा उदाहरण Program निम्नानुसार है:
// SortedArray class holds sorted employee objects #include <iostream.h> #include <conio.h> class employee // employee class { private: enum { LEN=30 }; // maximum length of names char name[LEN]; // employee name unsigned long number; // employee number public: void getdata() // get data from user { cout << "\n Name: "; cin >> name; cout << " Number: "; cin >> number; } void putdata() const // display data { cout << "\n Name = " << name; cout << "\n Number = " << number; } unsigned long get_number() const // return emp number { return number; } }; class SortedArray { private: enum {SIZE=100}; employee* arr[SIZE]; // array of pointers to emps int total; // number of emps in array public: SortedArray() : total(0) // no-arg constructor { } employee* operator[](int) const; // declarations void insert(employee*); }; // read data from element n employee* SortedArray::operator[](int n) const { return arr[n]; } // insert in sorted order void SortedArray::insert(employee* data) { int j = 0; while(j < total && // find correct place data->get_number() > arr[j]->get_number() ) j++; for(int k=total; k>j; k--) // move higher elements up arr[k] = arr[k-1]; arr[j] = data; // insert new data total++; // now it has one more element } void main() { SortedArray sa; // a sorted array employee* ptr; // utility pointer char answer; // 'y' or 'n' int total = 0; // number of employees in array do { ptr = new employee; // make an employee cout << "Enter data for employee " << ++total << ": "; ptr->getdata(); // get employee data from user sa.insert(ptr); // put employee in sorted array cout << "Do another (y/n)? "; cin >> answer; } while(answer != 'n'); cout << "\nCONTENTS SORTED BY NUMBER" << endl; for(int j=0; j<total; j++) // display data in order { cout << "\nEmployee " << (j+1); sa[j]->putdata(); } getch(); }
इस Program के तीन हिस्से हैं: पहले भाग में Employee Class है दूसरे हिस्से में SortedArray Class है और तीसरे हिस्से में main() Function है। इस Program से User का Interaction निम्नानुसार होता है:
Output Enter data for employee 1: Name: Kishan Number: 120 Do another (y/n)? y Enter data for employee 2: Name: Mohan Number: 300 Do another (y/n)? y Enter data for employee 3: Name: Nanlal Number: 192 Do another (y/n)? y Enter data for employee 4: Name: Gopal Number: 102 Do another (y/n)? y Enter data for employee 5: Name: Madhav Number: 696 Do another (y/n)? n CONTENTS SORTED BY NUMBER Employee 1 Name = Gopal Number = 102 Employee 2 Name = Kishan Number = 120 Employee 3 Name = Nanlal Number = 192 Employee 4 Name = Mohan Number = 300 Employee 5 Name = Madhav Number = 696
employee Class में data Member के रूप में एक Number व एक नाम (char* string) है। इस Class का getdata() Member Function User से Object के लिए Data प्राप्त करता है और putdata() Member Function Data को Display करने का काम करता है। इसमें एक get_number() Member Function भी है जिसकी आवश्यकता SortedArray Class को ये किसी Employee का Number पता करने के लिए होती है। इस Number का प्रयोग Create होने वाले नए employee Object को उसकी सही Location पर Store किया जाता है।
SortedArray Class में मुख्य Data Member एक Pointers to Employees का Array है। इसमें एक और Integer प्रकार का Data Member total है जो ये बताता है कि SortedArray में कितने Objects को Sort किया गया है। एक no-argument Constructor total का मान 0 Initialize करता है क्योंकि Array शुरूआत में बिल्कुल Empty होता है उसमें किसी Employee Object का Pointer नहीं होता है।
SortedArray में दो Member Functions हैं और [] Operator को Overload किया गया है ताकि Array के किसी Element को Specify किए गए Index Number से Access किया जा सके। ये एक Read Only Operator हैं जिसका प्रयोग Array के किसी Element को Value Set करने के लिए नहीं किया जा सकता है। ऐसा इसलिए किया गया है क्योंकि SortedArray स्वयं ही ये तय करे कि किस Element को कहां पर Insert करना है ना कि User इस बात को तय करे। यदि User Object की Location Index Number द्वारा SortedArray में तय करेगा तो सम्भव है कि Array पूरी तरह से Sort ना हो पाए।
किसी Element को SortedArray Array में Insert करने के लिए User insert() Member Function को Call करता है। ये Function केवल एक Argument लेता है जो कि Create होने वाले नए Employee Object का Pointer होता है। Pointers को आरोही क्रम में बढते हुए Employee Numbers के अनुसार Array में Store किया जाता है।
जब insert() Member Function को ऐसा Object मिलता है जिसका employee number Insert किए जा रहे employee Number से Higher है, तो ये Function नए Object के Employee Number को पिछले वाले Employee Number के नीचे वाले Array Element में Store करता है। लेकिन इससे पहले insert() Function SortedArray में पहले से Stored सभी पुराने Pointers को ऊपर की तरफ Move करता है फिर नए Employee के Pointer को Array में Store करता है। ये SortedArray Bubble Sort Technique को Use करते हुए Sorting करता है।
main() Program एक Sorted Array Create करता है। फिर एक do Loop द्वारा new Operator का प्रयोग करते हुए तेजी से Employee Objects Create करता है। हर Employee Object का Address Sorted Array में Insert किया जाता है। जब User Employees को Insert करना बन्द करता है, तब SortedArray के सभी Objects के Data Screen पर Display किए जाते हैं और ये Data हमें Output में Sorted Form में प्राप्त होते हैं।
Sorted Array की एक सबसे बडी विशेषता ये है कि हम इसमें से किसी भी Data Item को बहुत ही तेजी से Find कर सकते हैं क्योंकि हम Array पर Binary Search Algorithm को Apply कर सकते हैं, जबकि Linked List पर इस Algorithm को सामान्य तरीके से Apply नहीं किया जा सकता है। एक Sorted Array में हम Binary Search Algorithm को Apply करके किसी Data Element को Find कर सकते हैं। Binary Search एक बहुत ही Fast तरीके से Data को Search करने वाला Algorithm है। (C++ Container Class – ISOCPP)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF