কিভাবে C ++ Unordered মানচিত্র ব্যবহার করবেন

How Use C Unordered Map



একটি মানচিত্র, একটি সহযোগী অ্যারে নামেও পরিচিত উপাদানগুলির একটি তালিকা, যেখানে প্রতিটি উপাদান একটি কী/মান জোড়া। সুতরাং, প্রতিটি কী একটি মান অনুরূপ। সাধারণ কাজের জন্য বিভিন্ন কী একই মান থাকতে পারে। উদাহরণস্বরূপ, চাবিগুলি ফলের তালিকা এবং সংশ্লিষ্ট মান, ফলের রঙ হতে পারে। C ++ এ, মানচিত্রটি সদস্য ফাংশন এবং অপারেটরগুলির সাথে একটি ডেটা স্ট্রাকচার হিসাবে প্রয়োগ করা হয়। একটি অর্ডার করা মানচিত্র হল এমন একটি যেখানে উপাদান জোড়াগুলি কী দ্বারা অর্ডার করা হয়েছে। একটি অনিয়ন্ত্রিত মানচিত্র এমন একটি যেখানে কোন আদেশ নেই। এই নিবন্ধটি ব্যাখ্যা করে কিভাবে C ++ unordered মানচিত্র ব্যবহার করতে হয়, যা unordered_map হিসাবে লেখা হয়। এই নিবন্ধটি বুঝতে আপনার C ++ পয়েন্টারগুলিতে জ্ঞান প্রয়োজন। unordered_map হল C ++ স্ট্যান্ডার্ড লাইব্রেরির অংশ।

ক্লাস এবং অবজেক্টস

একটি শ্রেণী হল ভেরিয়েবল এবং ফাংশনগুলির একটি সেট যা একসাথে কাজ করে, যেখানে ভেরিয়েবলের মান নির্ধারণ করা হয় না। যখন ভেরিয়েবলে মান নির্ধারিত হয়, তখন ক্লাস একটি বস্তুতে পরিণত হয়। একই শ্রেণীতে প্রদত্ত বিভিন্ন মান বিভিন্ন বস্তুর ফলে; অর্থাৎ, বিভিন্ন বস্তু বিভিন্ন শ্রেণীর একই শ্রেণী। একটি শ্রেণী থেকে একটি বস্তু তৈরি করা বস্তুটিকে তাত্ক্ষণিক বলে মনে করা হয়।







নাম, unordered_map, একটি শ্রেণী। Unordered_map ক্লাস থেকে তৈরি একটি বস্তুর একটি প্রোগ্রামার মনোনীত নাম আছে।



একটি ফাংশন যা একটি শ্রেণীর অন্তর্গত তা ক্লাস থেকে একটি বস্তুকে তাত্ক্ষণিক করার জন্য প্রয়োজন। C ++ এ, সেই ফাংশনটির ক্লাসের নামের মতো নাম রয়েছে। ক্লাস থেকে তৈরি করা বস্তুর (তাত্ক্ষণিক) প্রোগ্রামার দ্বারা তাদের বিভিন্ন নাম দেওয়া হয়।



শ্রেণী থেকে একটি বস্তু তৈরি করা মানে বস্তু তৈরি করা; এর অর্থ তাত্ক্ষণিক করাও।





একটি C ++ প্রোগ্রাম যা unordered_map ক্লাস ব্যবহার করে, ফাইলের শীর্ষে নিম্নলিখিত লাইন দিয়ে শুরু হয়:

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;

প্রথম লাইন ইনপুট/আউটপুটের জন্য। দ্বিতীয় লাইন হল প্রোগ্রামটিকে unordered_map ক্লাসের সমস্ত বৈশিষ্ট্য ব্যবহার করার অনুমতি দেওয়া। তৃতীয় লাইনটি প্রোগ্রামটিকে স্ট্যান্ডার্ড নেমস্পেসে নাম ব্যবহার করতে দেয়।



একটি ফাংশন ওভারলোডিং

যখন দুই বা ততোধিক ভিন্ন ফাংশন স্বাক্ষরের একই নাম থাকে, তখন সেই নামটি ওভারলোড করা হয় বলে বলা হয়। যখন একটি ফাংশন বলা হয়, আর্গুমেন্টের সংখ্যা এবং ধরন, কোন ফাংশনটি আসলে কার্যকর করা হয় তা নির্ধারণ করুন।

নির্মাণ/অনুলিপি নির্মাণ

সহজ নির্মাণ

একটি অনিয়ন্ত্রিত মানচিত্র তৈরি করা যেতে পারে এবং নিম্নরূপ মান নির্ধারণ করা যেতে পারে:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';
umap['আঙ্গুর'] = 'সবুজ';
umap['ডুমুর'] = 'বেগুনি';

ঘোষণাপত্রটি কী এবং মান জোড়ার প্রকারগুলির সাথে টেমপ্লেট বিশেষীকরণের সাথে শুরু হয়। এটি মানচিত্রের জন্য প্রোগ্রামারের নির্বাচিত নাম দ্বারা অনুসরণ করা হয়; তারপর একটি সেমিকোলন। দ্বিতীয় কোড সেগমেন্ট দেখায় কিভাবে তাদের কীগুলিতে মান নির্ধারণ করা যায়।
Initializer_list দ্বারা নির্মাণ
ইহা এভাবে করা যাবে:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap({{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}});

Initializer_list বরাদ্দ করে নির্মাণ
উদাহরণ:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap= {{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}};

অন্য unordered_map কপি করে নির্মাণ
উদাহরণ:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap1({{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}});
unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap2(umap1);

জোড়ার উপাদান

নিম্নোক্ত কোডটি দেখায় কিভাবে জোড়া উপাদান তৈরি এবং অ্যাক্সেস করতে হয়:

জোড়া<গৃহস্থালি, const গৃহস্থালি*>পিআর= {'ডি', 'থাকা'};
খরচ<<পিআরপ্রথম << 'n';
খরচ<<পিআরদ্বিতীয় << 'n';

আউটপুট হল:


থাকা

প্রথম এবং দ্বিতীয়টি জোড়া দুটি আইটেমের জন্য সংরক্ষিত শব্দ। জোড়ার মানগুলি এখনও প্রথম এবং দ্বিতীয় ব্যবহার করে পরিবর্তন করা যেতে পারে।

একটি জোড়াকে বলা হয়, মানহীন প্রকারের মানবিহীন মানচিত্রে।

unordered_map এলিমেন্ট অ্যাক্সেস

mapped_type & operator [] (key_type && k)
সংশ্লিষ্ট কী এর মান প্রদান করে। উদাহরণ:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';
umap['আঙ্গুর'] = 'সবুজ';
umap['ডুমুর'] = 'বেগুনি';

const গৃহস্থালি *ঠিক=umap['আঙ্গুর'];

খরচ<<ঠিক<<'n';

আউটপুট হল: সবুজ। মানগুলি একইভাবে বরাদ্দ করা যেতে পারে - উপরে দেখুন।

unordered_map ক্যাপাসিটি

size_type size () const noexcept
মানচিত্রে জোড়া সংখ্যা প্রদান করে।

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';
umap['আঙ্গুর'] = 'সবুজ';
umap['ডুমুর'] = 'বেগুনি';

খরচ<<umap।আকার() <<'n';

আউটপুট 3।

bool খালি () const noexcept

মানচিত্রে জোড়া না থাকলে সত্যের জন্য 1 এবং যদি জোড়া থাকে তবে 0 মিথ্যা দেয়। উদাহরণ:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;
খরচ<<umap।খালি() <<'n';

আউটপুট 1।

রিটার্নিং ইটারেটর এবং অনিয়ন্ত্রিত মানচিত্র শ্রেণী

একটি পুনরাবৃত্ত একটি পয়েন্টার মত কিন্তু পয়েন্টার তুলনায় আরো কার্যকারিতা আছে।

শুরু () noexcept

একটি পুনরাবৃত্তি প্রদান করে যা মানচিত্র বস্তুর প্রথম জোড়া নির্দেশ করে, যেমন নিম্নোক্ত কোড সেগমেন্টে:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';umap['আঙ্গুর'] = 'সবুজ';umap['ডুমুর'] = 'বেগুনি';

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::পুনরাবৃত্তকারীইটার=umap।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>পিআর= *ইটার;
খরচ<<পিআরপ্রথম << ',' <<পিআরদ্বিতীয় << 'n';

আউটপুট হল: ডুমুর, বেগুনি। মানচিত্রটি অন-অর্ডার করা হয়েছে।

start () const noexcept;

একটি পুনরাবৃত্তি প্রদান করে যা মানচিত্র বস্তুর সংগ্রহের প্রথম উপাদান নির্দেশ করে। যখন বস্তুর নির্মাণ const এর পূর্বে হয়, তখন অভিব্যক্তি start () const এর পরিবর্তে exec () শুরু হয়। এই অবস্থার অধীনে, বস্তুর উপাদানগুলি পরিবর্তন করা যায় না। এটি নিম্নলিখিত কোডে ব্যবহৃত হয়, উদাহরণস্বরূপ।

constunordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap({{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}});

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::const_iteratorইটার=umap।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>পিআর= *ইটার;
খরচ<<পিআরপ্রথম << ',' <<পিআরদ্বিতীয় << 'n';

আউটপুট হল: ডুমুর, বেগুনি। মানচিত্রটি অন-অর্ডার করা হয়েছে। মনে রাখবেন যে ফিরে আসা পুনরাবৃত্তিকে গ্রহণ করার জন্য কেবল পুনরাবৃত্তির পরিবর্তে const_iterator ব্যবহার করা হয়েছে।

শেষ () না

একটি পুনরাবৃত্তি প্রদান করে যা অবিলম্বে মানচিত্র বস্তুর শেষ উপাদানটির বাইরে নির্দেশ করে।

শেষ () const noexcept

একটি পুনরাবৃত্তি প্রদান করে যা অবিলম্বে মানচিত্র বস্তুর শেষ উপাদানটির বাইরে নির্দেশ করে। যখন মানচিত্র বস্তুর নির্মাণ const এর পূর্বে হয়, তখন অভিব্যক্তি শেষ () const এর পরিবর্তে সঞ্চালিত হয়।

unordered_map অপারেশন

পুনরাবৃত্ত সন্ধান (const key_type & k)

মানচিত্রে প্রদত্ত চাবির একজোড়া অনুসন্ধান। যদি এটি পাওয়া যায়, এটি পুনরাবৃত্তিকে ফেরত দেয়। যদি না পাওয়া যায়, এটি একটি পুনরাবৃত্তকারী প্রদান করে যা মানচিত্রের শেষে নির্দেশ করে, যা একটি জোড়া নয়। নিচের কোডটি দেখায় কিভাবে এই সদস্য ফাংশন ব্যবহার করতে হয়:

unordered_map<গৃহস্থালি,গৃহস্থালি>umap;

umap['প্রতি'] = 'খ';umap['গ'] = 'ডি';umap['এবং'] = 'চ';

unordered_map<গৃহস্থালি,গৃহস্থালি> ::পুনরাবৃত্তকারীইটার=umap।অনুসন্ধান('গ');
যদি (umap।অনুসন্ধান('গ') ! =umap।শেষ())
{
জোড়া<গৃহস্থালি,গৃহস্থালি>পিআর= *ইটার;
খরচ<<পিআরপ্রথম << ',' <<পিআরদ্বিতীয় << 'n';
}

আউটপুট হল: c, d

const_iterator find (const key_type & k) const;

ফাংশনের এই সংস্করণটিকে বলা হয়, যদি অনিয়ন্ত্রিত মানচিত্র তৈরি করা শুরু হয় const দিয়ে, যাতে মানচিত্রের সমস্ত উপাদান কেবল পঠনযোগ্য হয়।

unordered_map সংশোধনকারী

জোড়া সন্নিবেশ (value_type && obj)
একটি অনিয়ন্ত্রিত মানচিত্র মানে জোড়াগুলো কোন ক্রমে নেই। সুতরাং, প্রোগ্রামটি সুবিধাজনক যে কোনও জায়গায় জোড়াটি সন্নিবেশ করায়। ফাংশন ফিরে, জোড়া। যদি সন্নিবেশ সফল হয়, সত্যের জন্য বুল 1 হবে, অন্যথায় এটি মিথ্যাতে 0 হবে। যদি সন্নিবেশ সফল হয়, তাহলে পুনরাবৃত্তকারী নতুন সন্নিবেশিত উপাদানটির দিকে নির্দেশ করবে। নিচের কোডটি ব্যবহারের ব্যাখ্যা দেয়:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';
umap['আঙ্গুর'] = 'সবুজ';
umap['ডুমুর'] = 'বেগুনি';

umap।সন্নিবেশ করান({{'চেরি', 'নেট'}, {'স্ট্রবেরি', 'নেট'}});

খরচ<<umap।আকার() << 'n';

আউটপুট হল: 5. একাধিক জোড়া ertedোকানো যাবে।

size_type erase (const key_type & k)

এই ফাংশনটি unordered_map থেকে একটি জোড়া মুছে দেয়। নিম্নলিখিত কোড সেগমেন্টটি ব্যাখ্যা করে:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap;

umap['কলা'] = 'হলুদ';
umap['আঙ্গুর'] = 'সবুজ';
umap['ডুমুর'] = 'বেগুনি';

intএকের উপর=umap।মুছে ফেলা('আঙ্গুর');

খরচ<<umap।আকার() << 'n';

আউটপুট 2।
অকার্যকর অদলবদল (unordered_map &)
দুটি অনিয়ন্ত্রিত মানচিত্র অদলবদল করা যেতে পারে, যেমন এই কোড বিভাগে দেখানো হয়েছে:

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap1= {{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}, {'স্ট্রবেরি', 'নেট'}};

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap2= {{'চেরি', 'নেট'}, {'চুন', 'সবুজ'}};

umap1।বিনিময়(umap2);

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::পুনরাবৃত্তকারীiter1=umap1।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>pr1= *iter1;
unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::পুনরাবৃত্তকারীiter2=umap2।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>pr2= *iter2;

খরচ<< 'Umap1 এর প্রথম কী এবং আকার:'<<pr1।প্রথম <<','<<umap1।আকার() << 'n';
খরচ<< 'Umap2 এর প্রথম কী এবং আকার'<<pr2।প্রথম <<','<<umap2।আকার() << 'n';
unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap1= {{'কলা', 'হলুদ'},
{'আঙ্গুর', 'সবুজ'}, {'ডুমুর', 'বেগুনি'}, {'স্ট্রবেরি', 'নেট'}};
unordered_map<const গৃহস্থালি*, const গৃহস্থালি*>umap2= {{'চেরি', 'নেট'}, {'চুন', 'সবুজ'}};

umap1।বিনিময়(umap2);

unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::পুনরাবৃত্তকারীiter1=umap1।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>pr1= *iter1;
unordered_map<const গৃহস্থালি*, const গৃহস্থালি*> ::পুনরাবৃত্তকারীiter2=umap2।শুরু();
জোড়া<const গৃহস্থালি*, const গৃহস্থালি*>pr2= *iter2;

খরচ<< 'Umap1 এর প্রথম কী এবং আকার:'<<pr1।প্রথম <<','<<umap1।আকার() << 'n';
খরচ<< 'Umap2 এর প্রথম কী এবং আকার'<<pr2।প্রথম <<','<<umap2।আকার() << 'n';

আউটপুট হল:

Umap1 এর প্রথম কী এবং আকার: চুন, ২

Umap2 স্ট্রবেরির প্রথম কী এবং আকার, 4

মানচিত্রটি অন-অর্ডার করা হয়েছে। মনে রাখবেন যে একটি মানচিত্রের দৈর্ঘ্য প্রয়োজনে বৃদ্ধি করা হয়েছে। ডেটার ধরন একই হতে হবে।

ক্লাস এবং তার তাত্ক্ষণিক বস্তু

একটি মান একটি ডেটা টাইপ, যেমন একটি তাত্ক্ষণিক বস্তু একটি ক্লাসের জন্য। অনিয়ন্ত্রিত মানচিত্র নির্মাণ একটি শ্রেণীকে ডেটা টাইপ হিসাবে গ্রহণ করতে পারে। নিম্নলিখিত প্রোগ্রামটি এটিকে ব্যাখ্যা করে:

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;

ক্লাস TheCla
{
জনসাধারণ:
intএকের উপর;
স্থির গৃহস্থালিসিএইচ;

শূন্যফাংশন(গৃহস্থালিনা, const গৃহস্থালি *পৃ)
{
খরচ<< 'সেখানে ' <<একের উপর<< 'মূল্যবান বই' <<না<<পৃ<< ' দোকান.' << 'n';
}
স্থির শূন্যমজা(গৃহস্থালিসিএইচ)
{
যদি (সিএইচ== 'প্রতি')
খরচ<< 'অফিসিয়াল স্ট্যাটিক সদস্য ফাংশন' << 'n';
}
};

intপ্রধান()
{
TheCla obj1;TheCla obj2;TheCla obj3;TheCla obj4;TheCla obj5;

unordered_map<const গৃহস্থালি*,TheCla>umap;
umap= {{'কলা',obj1}, {'আঙ্গুর',obj2}, {'ডুমুর',obj3}, {'স্ট্রবেরি',obj4}, {'চুন',obj5}};

খরচ<<umap।আকার() << 'n';

প্রত্যাবর্তন 0;
}

আউটপুট হল: 5।

শ্রেণীর সংজ্ঞায় দুটি ডেটা পাবলিক সদস্য এবং দুটি পাবলিক সদস্য ফাংশন রয়েছে। প্রধান () ফাংশনে, ক্লাসের জন্য বিভিন্ন বস্তু তাত্ক্ষণিকভাবে তৈরি করা হয়। তারপর একটি অনিয়ন্ত্রিত মানচিত্র তাত্ক্ষণিকভাবে তৈরি করা হয়, যেখানে প্রতিটি জোড়া একটি ফলের নাম এবং শ্রেণীর একটি বস্তুর সমন্বয়ে গঠিত। মানচিত্রের আকার প্রদর্শিত হয়। প্রোগ্রাম কোন সতর্কতা বা ত্রুটি বার্তা ছাড়া কম্পাইল।

মানচিত্রের প্রয়োগ

অ্যারে মান একটি সূচক সংযুক্ত করে। জীবনের অনেক পরিস্থিতিতে কী/মান জোড়া বিদ্যমান, যা প্রোগ্রাম করা যায়। ফল/রঙের মূল/মূল্য জোড়া কেবল একটি উদাহরণ। আরেকটি উদাহরণ হল মানুষের নাম এবং তাদের বয়স। এক্ষেত্রে জোড়া হবে এক ধরনের, জোড়া। এটি জোড়াও হতে পারে। পরবর্তী ক্ষেত্রে, প্রাক-প্রক্রিয়াকরণ নির্দেশ নিযুক্ত করা হবে। একটি কী/মান জোড়া এখনও বিবাহিত দম্পতির নাম হতে পারে। যেসব দেশে বহুবিবাহ আছে, সেখানে একজন পুরুষের জন্য আলাদা স্ত্রী থাকবে।

একটি মানচিত্র গঠন

একটি মানচিত্র একটি দ্বিমাত্রিক অ্যারে নয়, যেখানে দুটি কলাম রয়েছে। একটি মানচিত্র একটি হ্যাশ ফাংশন দিয়ে কাজ করে। কীটি হ্যাশ ফাংশন দ্বারা একটি অ্যারের পূর্ণসংখ্যায় এনকোড করা হয়। এই অ্যারেই মান ধরে রাখে। সুতরাং, প্রকৃতপক্ষে মানগুলির সাথে একটি অ্যারে রয়েছে এবং অ্যারের সূচকে কীগুলি ম্যাপ করা হয় এবং তাই কী এবং মানগুলির মধ্যে চিঠিপত্র তৈরি করা হয়। হ্যাশিং একটি বিস্তৃত বিষয় এবং এই নিবন্ধে আচ্ছাদিত নয়।

উপসংহার

একটি মানচিত্র, একটি সহযোগী অ্যারে নামেও পরিচিত উপাদানগুলির একটি তালিকা, যেখানে প্রতিটি উপাদান একটি কী/মান জোড়া। সুতরাং, প্রতিটি কী একটি মান অনুরূপ। C ++ এ, মানচিত্রটি সদস্য ফাংশন এবং অপারেটরগুলির সাথে একটি ডেটা স্ট্রাকচার হিসাবে প্রয়োগ করা হয়। একটি অর্ডার করা মানচিত্র হল এমন একটি যেখানে উপাদান জোড়াগুলি কী দ্বারা অর্ডার করা হয়েছে। একটি অর্ডারবিহীন মানচিত্র এমন যেখানে একটি অর্ডার নেই।

টেকনিক্যালি, একটি হ্যাশ জোড়া উপাদান নিয়ে গঠিত। প্রকৃতপক্ষে, জোড়াটি তার সদস্য ফাংশন এবং অপারেটরগুলির সাথে একটি সম্পূর্ণ ডেটা স্ট্রাকচার। জোড়া জন্য দুটি টেমপ্লেট পরামিতি unordered_map জন্য একই দুটি টেমপ্লেট পরামিতি।

মানচিত্রের জন্য initializer_list হল আক্ষরিক একটি অ্যারে আক্ষরিক। প্রতিটি অভ্যন্তরীণ আক্ষরিক দুটি বস্তু নিয়ে গঠিত, কী/মান জোড়া।

Unordered_map এর সদস্য ফাংশন এবং অপারেটরগুলিকে নিম্নোক্ত শিরোনামে শ্রেণিবদ্ধ করা যেতে পারে: unordered_map নির্মাণ/অনুলিপি নির্মাণ, unordered_map ক্যাপাসিটি, unordered_map ইটারেটর, unordered_map অপারেশন, এবং unordered_map সংশোধনকারী।

একটি অনিয়ন্ত্রিত মানচিত্র ব্যবহার করা হয় যখন একটি চাবিকে মান দিয়ে ম্যাপ করতে হয়।

ক্রিস