C++ Container Class

C++ Container Class: पिछले Post में हमने जो Class Create की थी वह linklist Class एक Container Class का उदाहरण है। Container Classes का प्रयोग Data को Store (Contain) करने के लिए किया जाता है। आगे के अध्‍याय में हम इसके बारे में चर्चा करेंगे जब हम Standard Template Library को समझेंगे, जिसमें इसी प्रकार के कई और Containers जैसे कि vectors, lists, setsdeque हैं।

अब हम एक और 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)

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS