Unordered_Map::Find() বোঝা
unordered_map::find() ফাংশনটি একটি 'unordered_map' এর মধ্যে একটি নির্দিষ্ট কী-এর সাথে যুক্ত একটি উপাদান সনাক্ত করার জন্য ডিজাইন করা হয়েছে। বস্তুটি ধ্রুবক-যোগ্য কিনা তার উপর ভিত্তি করে এর ঘোষণা পরিবর্তিত হয়, এর ব্যবহারে নমনীয়তা প্রদান করে।
পুনরাবৃত্তিকারী খুঁজুন ( const চাবির ধরন এবং k ) ;এটি ব্যবহার করা হয় যখন 'unordered_map' ধ্রুবক-যোগ্য না হয়। এই কোডটি একটি পুনরাবৃত্তিকারী প্রদান করে যা পাওয়া উপাদানটির দিকে নির্দেশ করে।
const_iterator খুঁজুন ( const চাবির ধরন এবং k ) const ;
এই সংস্করণটি প্রযোজ্য যখন 'unordered_map' ধ্রুবক-যোগ্য হয়। এটি অ ধ্রুবক সংস্করণের অনুরূপ আচরণ সহ একটি ধ্রুবক পুনরাবৃত্তিকারী প্রদান করে।
পরামিতি:
এটি একটি একক প্যারামিটার লাগে, 'k', যা 'unordered_map'-এর মধ্যে অনুসন্ধান করার কী।
ফেরত মূল্য:
রিটার্ন মান 'unordered_map' অবজেক্টের যোগ্যতার উপর নির্ভর করে।
বস্তুটি ক্রমাগত যোগ্য না হলে পদ্ধতিটি একটি অ ধ্রুবক পুনরাবৃত্তিকারী প্রদান করে।
যদি বস্তুটি ধ্রুবক-যোগ্য হয়, তবে পদ্ধতিটি একটি ধ্রুবক পুনরাবৃত্তিকারী প্রদান করে।
সময়ের জটিলতা:
std::unordered_map::find() এর কার্যকারিতা বোঝার জন্য সময় জটিলতা অত্যন্ত গুরুত্বপূর্ণ:
গড় ক্ষেত্রে, সময়ের জটিলতা ধ্রুবক (O(1)), এটি সাধারণ ব্যবহারের ক্ষেত্রে অত্যন্ত দক্ষ করে তোলে।
সবচেয়ে খারাপ পরিস্থিতিতে, সময়ের জটিলতা রৈখিক হয়ে যায় (O(n))। যাইহোক, এই দৃশ্যটি অনুশীলনে বিরল।
উদাহরণ 1:
চলুন unordered_map::find() এর ব্যবহার এবং সুবিধাগুলি ব্যাখ্যা করার জন্য একটি ব্যবহারিক উদাহরণ অন্বেষণ করি। এই উদাহরণে, একটি 'unordered_map' তৈরি করা হয়েছে কী হিসেবে অক্ষর এবং মান হিসেবে সংশ্লিষ্ট পূর্ণসংখ্যাগুলি দিয়ে। find() ফাংশনটি 'p'-এর কী-এর সাথে যুক্ত উপাদানটিকে সনাক্ত করে। 'ittr' পুনরাবৃত্তিকারীটি পাওয়া উপাদানের সাথে লিঙ্ক করা হয় এবং এর ডেটা কনসোলে প্রিন্ট করা হয়। নিম্নলিখিত কোড দেখুন:
# অন্তর্ভুক্ত করুন# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে ;
int প্রধান ( অকার্যকর ) {
unordered_map < চর , int > unomp = {
{ 'ভিতরে' , 9 } ,
{ 'ক' , 6 } ,
{ 'পি' , 8 } ,
{ 'আমি' , 3 } ,
{ 'এর' , 4 } } ;
স্বয়ংক্রিয় ittr = unomp অনুসন্ধান ( 'পি' ) ;
cout << 'পুনরাবৃত্ত' ' << ittr->প্রথম << ' ' পয়েন্ট = ' << ittr -> দ্বিতীয় << endl ;
ফিরে 0 ; }
এর একটি পরিষ্কার এবং আরও ভাল বোঝার জন্য কোডটি ভেঙে দেওয়া যাক:
# অন্তর্ভুক্ত করুন# অন্তর্ভুক্ত করুন
প্রয়োজনীয় হেডার ফাইলগুলি অন্তর্ভুক্ত করা হয়েছে: ইনপুট/আউটপুট অপারেশনের জন্য
'std' নামস্থান কোডটিকে সরল করে। এটি আপনাকে স্ট্যান্ডার্ড C++ লাইব্রেরি থেকে উপাদানগুলিকে 'std::' দিয়ে উপসর্গ না করে ব্যবহার করতে দেয়।
unordered_map < চর , int > unomp = { { 'ভিতরে' , 9 } , { 'ক' , 6 } , { 'পি' , 8 } , { 'আমি' , 3 } , { 'এর' , 4 } } ;অক্ষরগুলি ('w', 'a', 'p', 'm', 's') কী এবং সংশ্লিষ্ট পূর্ণসংখ্যা (9, 6, 8, 3, 4) দিয়ে 'um' নামের একটি 'unordered_map' তৈরি করা হয়েছে ) মান হিসাবে।
স্বয়ংক্রিয় ittr = unomp অনুসন্ধান ( 'পি' ) ;find() ফাংশনটি 'unordered_map'-এ 'p' কী দিয়ে উপাদান অনুসন্ধান করতে ব্যবহৃত হয় যা 'unomp'। 'ittr' পুনরাবৃত্তিকারী চিহ্নিত উপাদানের দিকে নির্দেশ করে।
cout << 'পুনরাবৃত্ত' ' << ittr->প্রথম << ' ' পয়েন্ট = ' << ittr -> দ্বিতীয় << endl ;ইটারেটর দ্বারা নির্দেশিত বিষয়বস্তু কনসোলে মুদ্রিত হয়। এটি এই ক্ষেত্রে কী (“p”) এবং সংশ্লিষ্ট মান (8) প্রিন্ট করে।
ফিরে 0 ;প্রোগ্রামটি সমাপ্ত হয়, একটি সফল সঞ্চালন নির্দেশ করতে 0 ফিরে আসে।
কোডের আউটপুট আপনার রেফারেন্সের জন্য নিম্নলিখিত দেওয়া হয়:
এই কোডটি unordered_map::find() ব্যবহার করার একটি সহজ উদাহরণ একটি 'unordered_map'-এর মধ্যে উপাদানগুলিকে দক্ষতার সাথে অনুসন্ধান এবং অ্যাক্সেস করতে। পুনরাবৃত্ত প্রাপ্ত উপাদানের কী এবং সংশ্লিষ্ট মান উভয়ই অ্যাক্সেস করার জন্য একটি সুবিধাজনক উপায় প্রদান করে।
উদাহরণ 2:
এখানে unordered_map::find() ফাংশনের আরেকটি সহজ উদাহরণ। এই কোডটি পূর্ণসংখ্যা কীগুলির সাথে যুক্ত বুলিয়ান মানগুলি সংরক্ষণ করতে 'unordered_map' এর ব্যবহার প্রদর্শন করে এবং তারপর নির্দিষ্ট কীগুলির অস্তিত্ব পরীক্ষা করতে find() ফাংশনটি ব্যবহার করে। আসুন আমরা নিম্নলিখিত কোডটি দেখি এবং তারপর বুঝতে পারি এটি কীভাবে কাজ করে:
#includeনামস্থান std ব্যবহার করে ;
int প্রধান ( ) {
unordered_map < int , bool > unomp ;
unomp [ 2 ] = সত্য ;
unomp [ 67 ] = মিথ্যা ;
unomp [ চার পাঁচ ] = সত্য ;
unomp [ 98 ] = মিথ্যা ;
যদি ( unomp অনুসন্ধান ( 67 ) == unomp শেষ ( ) )
cout << 'উপাদান পাওয়া যায়নি' << endl ;
অন্য
cout << 'উপাদান পাওয়া গেছে' << endl ;
যদি ( unomp অনুসন্ধান ( 42 ) == unomp শেষ ( ) )
cout << 'উপাদান পাওয়া যায়নি' << endl ;
অন্য
cout << 'উপাদান পাওয়া গেছে' << endl ;
ফিরে 0 ;
}
এখানে কোডের একটি বিশদ বিবরণ রয়েছে:
#includeএই লাইনে একটি শিরোনাম ফাইল রয়েছে যা সর্বাধিক সাধারণ C++ লাইব্রেরিগুলিকে কভার করে যা প্রায়শই প্রতিযোগিতামূলক প্রোগ্রামিংয়ে ব্যবহৃত হয়। যাইহোক, একটি নিয়মিত C++ বিকাশে, এটি নির্দিষ্ট শিরোনাম অন্তর্ভুক্ত করার সুপারিশ করা হয়।
unordered_map < int , bool > unomp ;পূর্ণসংখ্যা কী এবং বুলিয়ান মান দিয়ে 'unomp' নামের একটি 'unordered_map' তৈরি করা হয়েছে।
unomp [ 2 ] = সত্য ;unomp [ 67 ] = মিথ্যা ;
unomp [ চার পাঁচ ] = সত্য ;
unomp [ 98 ] = মিথ্যা ;
কী-মানের জোড়াগুলি 'অক্রমহীন_ম্যাপে' ঢোকানো হয়। প্রতিটি কী (পূর্ণসংখ্যা) একটি বুলিয়ান মানের সাথে যুক্ত।
যদি ( unomp অনুসন্ধান ( 67 ) == unomp শেষ ( ) )cout << 'উপাদান পাওয়া যায়নি' << endl ;
অন্য
cout << 'উপাদান পাওয়া গেছে' << endl ;
find() ফাংশনটি “unordered_map”-এর মধ্যে নির্দিষ্ট কী (67 এবং 42) অনুসন্ধান করতে if-else শর্তের মধ্যে নিযুক্ত করা হয়। যদি কী পাওয়া যায়, 'উপাদান পাওয়া গেছে' মুদ্রিত হয়। অন্যথায়, 'উপাদান পাওয়া যায়নি' মুদ্রিত হয়। নিম্নলিখিত আউটপুট দেখুন:
এই কোডটি ম্যাপে নির্দিষ্ট কীগুলির উপস্থিতি বা অনুপস্থিতি নির্ধারণ করতে 'unordered_map' এর মৌলিক ব্যবহার এবং find() ফাংশন প্রদর্শন করে।
উদাহরণ 3:
চলুন আমরা অন্য একটি উদাহরণ অন্বেষণ করি যা রান টাইমে একটি ইনপুট প্রদান করে একটি মান খুঁজে বের করার প্রদর্শন করে। এই সাধারণ প্রোগ্রামটি নামগুলি (কী হিসাবে) এবং সম্পর্কিত সংখ্যাসূচক মানগুলি (এই ক্ষেত্রে, কিছু বৈশিষ্ট্যের প্রতিনিধিত্ব করে) সংরক্ষণ করতে একটি 'unordered_map' ব্যবহার করে। তারপরে এটি ব্যবহারকারীকে একটি নাম লিখতে, find() ফাংশন ব্যবহার করে মানচিত্রে সেই নামটি অনুসন্ধান করতে এবং নামটি পাওয়া গেলে সংশ্লিষ্ট মানটি প্রিন্ট করতে অনুরোধ করে। আপনার রেফারেন্সের জন্য কোড নিম্নলিখিত দেওয়া হয়:
# অন্তর্ভুক্ত করুন#include
# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে ;
int প্রধান ( ) {
std :: unordered_map < std :: স্ট্রিং , দ্বিগুণ > unomp = {
{ 'হেরি' , 23 } ,
{ 'অন্যান্য' , 7.4 } ,
{ 'কালসুম' , 1.2 } } ;
স্ট্রিং যারা ;
cout << 'তুমি কাকে খুঁজছ? ' ;
গেটলাইন ( খাওয়া , WHO ) ;
unordered_map < স্ট্রিং , দ্বিগুণ >:: const_iterator fnd = unomp অনুসন্ধান ( WHO ) ;
যদি ( fnd == unomp শেষ ( ) )
cout << 'পাওয়া যায়নি' ;
অন্য
cout << endl << fnd -> প্রথম << 'হয়' << fnd -> দ্বিতীয় << endl ;
ফিরে 0 ;
}
আপনার বোঝার জন্য নিম্নলিখিত কোডের ভাঙ্গন রয়েছে:
unordered_map < স্ট্রিং , দ্বিগুণ > unomp = { } ;স্ট্রিং কী (নাম) এবং দ্বিগুণ মান দিয়ে 'অনমপ' নামে একটি 'আনঅর্ডারড_ম্যাপ' তৈরি করা হয়েছে।
স্ট্রিং যারা ;ব্যবহারকারীকে স্ক্রিনে একটি নাম লিখতে বলা হয় এবং ইনপুটটি 'কে' স্ট্রিং ভেরিয়েবলে সংরক্ষণ করা হয়।
unordered_map < স্ট্রিং , দ্বিগুণ >:: const_iterator fnd = unomp অনুসন্ধান ( WHO ) ;find() ফাংশনটি 'unordered_map' এ প্রবেশ করা নাম অনুসন্ধান করতে ব্যবহৃত হয়। ফলাফল 'fnd' পুনরাবৃত্তিকারীতে সংরক্ষণ করা হয়।
যদি ( fnd == unomp শেষ ( ) )cout << 'পাওয়া যায়নি' ;
অন্য
cout << endl << fnd -> প্রথম << 'হয়' << fnd -> দ্বিতীয় << endl ;
যদি 'fnd' পুনরাবৃত্তিকারী 'unordered_map' (end()) এর শেষে পৌঁছায়, তাহলে এর অর্থ হল নামটি খুঁজে পাওয়া যায়নি এবং 'পাওয়া যায়নি' মুদ্রণ করা হয়েছে। অন্যথায়, নাম এবং এর সংশ্লিষ্ট মান মুদ্রিত হয়। এখানে কোডের আউটপুট:
এই কোডটি মূলত একটি 'unordered_map' ব্যবহার করে একটি সরল নাম লুকআপ টুল হিসেবে কাজ করে। এটি ব্যবহারকারীর ইনপুট নেয়, মানচিত্রে নাম অনুসন্ধান করে এবং নামটি পাওয়া গেলে সংশ্লিষ্ট মান প্রদান করে।
উপসংহার
C++-এ unordered_map::find() ফাংশন 'unordered_map' কন্টেইনারগুলির মধ্যে উপাদানগুলিকে দক্ষতার সাথে সনাক্ত করার জন্য একটি শক্তিশালী প্রক্রিয়া প্রদান করে। এটির ধ্রুবক গড় সময়ের জটিলতা পরিস্থিতিগুলিতে অনুসন্ধান অপারেশনগুলির জন্য এটিকে একটি পছন্দের পছন্দ করে তোলে যেখানে মূল-মান জোড়াগুলিকে দ্রুত অ্যাক্সেস করতে হবে। প্রদত্ত উদাহরণগুলি এর ব্যবহারিক ব্যবহার প্রদর্শন করে, এর সরলতা এবং কার্যকারিতার উপর জোর দেয়। উপসংহারে, unordered_map::find() ফাংশন আয়ত্ত করা একটি C++ প্রোগ্রামারকে 'unordered_map' কন্টেইনারগুলির সম্পূর্ণ সম্ভাবনাকে কাজে লাগানোর ক্ষমতা বাড়ায়, অপ্টিমাইজড এবং উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন তৈরিতে অবদান রাখে।