উদাহরণ সহ C ++ এ std :: তালিকা

একটি std :: তালিকা কি?

C ++ এ, std :: তালিকা একটি স্টোরেজ কন্টেইনার বোঝায়। Std: তালিকা আপনাকে যে কোন জায়গা থেকে আইটেম insোকাতে এবং অপসারণ করতে দেয়। Std :: তালিকাটি দ্বিগুণ সংযুক্ত তালিকা হিসাবে প্রয়োগ করা হয়। এর মানে হল তালিকা ডেটা দ্বি-নির্দেশমূলক এবং ক্রমানুসারে অ্যাক্সেস করা যেতে পারে।

স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি তালিকা দ্রুত এলোমেলো অ্যাক্সেস সমর্থন করে না, তবে এটি সমস্ত দিক থেকে ক্রমিক অ্যাক্সেস সমর্থন করে।

আপনি তালিকার উপাদানগুলিকে বিভিন্ন মেমরির অংশে ছড়িয়ে দিতে পারেন। ডেটাতে ক্রমিক অ্যাক্সেসের জন্য প্রয়োজনীয় তথ্য একটি পাত্রে সংরক্ষণ করা হয়। Std :: তালিকা রানটাইমের সময় প্রয়োজন অনুযায়ী উভয় প্রান্ত থেকে প্রসারিত এবং সঙ্কুচিত হতে পারে। একটি অভ্যন্তরীণ বরাদ্দকারী স্বয়ংক্রিয়ভাবে সঞ্চয়ের প্রয়োজনীয়তা পূরণ করে।

এই C ++ টিউটোরিয়ালে, আপনি শিখবেন:

কেন std :: তালিকা ব্যবহার করবেন?

এখানে, std :: তালিকা ব্যবহারের কারণ:

  • Std :: তালিকা অ্যারে এবং ভেক্টরের মতো অন্যান্য সিকোয়েন্স পাত্রে তুলনা করে।
  • যে কোনও অবস্থান থেকে উপাদানগুলি সন্নিবেশ করা, সরানো এবং বের করাতে তাদের আরও ভাল পারফরম্যান্স রয়েছে।
  • Std :: তালিকা অ্যালগরিদমগুলির সাথে আরও ভাল করে যা এই ধরনের ক্রিয়াকলাপ নিবিড়ভাবে সম্পাদন করে।

সিনট্যাক্স তালিকা

Std :: list সংজ্ঞায়িত করতে, আমাদের হেডার ফাইল আমদানি করতে হবে। এখানে std :: list সংজ্ঞা সিনট্যাক্স: | _+_ |

এখানে উপরের পরামিতিগুলির একটি বিবরণ:

  • T - উপাদানটির ধরন নির্ধারণ করে।

    আপনি যেকোনো ডাটা টাইপ, এমনকি ব্যবহারকারীর দ্বারা নির্ধারিত টাইপ দ্বারা টিকে প্রতিস্থাপন করতে পারেন।

  • বরাদ্দ - বরাদ্দকারী বস্তুর ধরণ নির্ধারণ করে।

    এটি ডিফল্টরূপে বরাদ্দকারী শ্রেণীর টেমপ্লেট ব্যবহার করে। এটি মান নির্ভর এবং একটি সাধারণ মেমরি বরাদ্দ মডেল ব্যবহার করে।

উদাহরণ 1:

 template  class list; 

আউটপুট:

এখানে কোডটির একটি স্ক্রিনশট দেওয়া হল:

কোড ব্যাখ্যা:

  1. অ্যালগরিদম হেডার ফাইলটি তার ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  2. এর ফাংশন ব্যবহার করতে iostream হেডার ফাইল অন্তর্ভুক্ত করুন।
  3. লিস্টের হেডার ফাইলটি এর ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  4. প্রধান () ফাংশন কল করুন। এই ফাংশনের মূল অংশে প্রোগ্রামের যুক্তি যুক্ত করা উচিত।
  5. 4 টি পূর্ণসংখ্যার একটি সেট দিয়ে my_list নামে একটি তালিকা তৈরি করুন।
  6. একটি লুপ পরিবর্তনশীল x তৈরি করতে a for loop ব্যবহার করুন। এই ভেরিয়েবলটি তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহৃত হবে।
  7. কনসোলে তালিকার মানগুলি মুদ্রণ করুন।
  8. একটি লুপ জন্য শরীরের শেষ।
  9. প্রধান () ফাংশনের শরীরের শেষ।

C ++ তালিকা ফাংশন

এখানে সাধারণ std :: list ফাংশন রয়েছে:

ফাংশন বর্ণনা
সন্নিবেশ করান ()এই ফাংশনটি ইটারেটর পয়েন্ট করার আগে একটি নতুন আইটেম tsোকায়।
ফেরত পাঠাও()এই ফাংশন তালিকার শেষে একটি নতুন আইটেম যোগ করে।
push_front ()এটি তালিকার সামনে একটি নতুন আইটেম যুক্ত করে।
pop_front ()এটি তালিকার প্রথম আইটেমটি মুছে দেয়।
আকার ()এই ফাংশন তালিকা উপাদানগুলির সংখ্যা নির্ধারণ করে।
সামনে ()তালিকার প্রথম আইটেম নির্ধারণ করতে।
পেছনে()তালিকার শেষ আইটেম নির্ধারণ করতে।
বিপরীত ()এটি তালিকা আইটেম বিপরীত।
যাওয়া()এটি দুটি সাজানো তালিকা মার্জ করে।

কনস্ট্রাক্টর

হেডার ফাইল দ্বারা প্রদত্ত ফাংশনগুলির তালিকা এখানে:

  • ডিফল্ট কনস্ট্রাক্টর
  • কনস্ট্রাক্টর পূরণ করুন
  • রেঞ্জ কনস্ট্রাক্টর
  • কপি কনস্ট্রাক্টর std :: list :: list ()- এটি বিদ্যমান তালিকায় থাকা প্রতিটি উপাদানের একটি কপি সহ একটি তালিকা তৈরি করে।
  • সরান কনস্ট্রাক্টর
  • ইনিশিয়ালাইজার লিস্ট কনস্ট্রাক্টর

উদাহরণ 2:

 #include #include #include int main() { std::list my_list = { 12, 5, 10, 9 }; for (int x : my_list) { std::cout << x << '
'; } } 

আউটপুট:

এখানে কোডটির একটি স্ক্রিনশট দেওয়া হল:

কোড ব্যাখ্যা:

  1. এর ফাংশন ব্যবহার করতে iostream হেডার ফাইল অন্তর্ভুক্ত করুন।
  2. লিস্টের হেডার ফাইলটি এর ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  3. কোডে এসটিডি নেমস্পেস অন্তর্ভুক্ত করুন তার ক্লাসগুলি কল না করে ব্যবহার করতে।
  4. প্রধান () ফাংশন কল করুন। এই ফাংশনের মূল অংশে প্রোগ্রামের যুক্তি যুক্ত করা উচিত।
  5. L নামে একটি খালি তালিকা তৈরি করুন।
  6. 3 টি পূর্ণসংখ্যার একটি সেট দিয়ে l1 নামে একটি তালিকা তৈরি করুন।
  7. শুরু থেকে শেষ পর্যন্ত l1 নামের তালিকার সমস্ত উপাদান দিয়ে l2 নামে একটি তালিকা তৈরি করুন।
  8. মুভ শব্দার্থবিদ্যা ব্যবহার করে l3 নামে একটি তালিকা তৈরি করুন। তালিকা l3 তালিকা l2 হিসাবে একই বিষয়বস্তু থাকবে।
  9. অন্যান্য টেক্সটের পাশাপাশি কনসোলে l নামের তালিকার আকার মুদ্রণ করুন।
  10. কনসোলে কিছু লেখা প্রিন্ট করুন।
  11. এটির নামে একটি পুনরাবৃত্তি তৈরি করুন এবং এটি l2 নামের তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহার করুন।
  12. কনসোলে l2 নামের তালিকার উপাদানগুলি মুদ্রণ করুন।
  13. কনসোলে কিছু লেখা প্রিন্ট করুন।
  14. এটির নামে একটি পুনরাবৃত্তি তৈরি করুন এবং এটি l3 নামের তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহার করুন।
  15. কনসোলে l3 নামের তালিকার উপাদানগুলি মুদ্রণ করুন।
  16. সফলভাবে সমাপ্ত হলে প্রোগ্রাম অবশ্যই মূল্য ফেরত দিতে হবে।
  17. প্রধান () ফাংশনের শরীরের শেষ।

ধারক বৈশিষ্ট্য

এখানে ধারক বৈশিষ্ট্যের তালিকা:

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

একটি তালিকায় োকানো

বিভিন্ন ফাংশন রয়েছে যা আমরা একটি তালিকায় মান সন্নিবেশ করতে ব্যবহার করতে পারি। আসুন এটি প্রদর্শন করি:

উদাহরণ 3:

 #include #include using namespace std; int main(void) { list l; list l1 = { 10, 20, 30 }; list l2(l1.begin(), l1.end()); list l3(move(l1)); cout << 'Size of list l: ' << l.size() << endl; cout << 'List l2 contents: ' << endl; for (auto it = l2.begin(); it != l2.end(); ++it) cout << *it << endl; cout << 'List l3 contents: ' << endl; for (auto it = l3.begin(); it != l3.end(); ++it) cout << *it << endl; return 0; } 

আউটপুট:

এখানে কোডটির একটি স্ক্রিনশট দেওয়া হল:

কোড ব্যাখ্যা:

  1. অ্যালগরিদম হেডার ফাইলটি তার ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  2. এর ফাংশন ব্যবহার করতে iostream হেডার ফাইল অন্তর্ভুক্ত করুন।
  3. লিস্টের হেডার ফাইলটি এর ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  4. প্রধান () ফাংশন কল করুন। এই ফাংশনের মূল অংশে প্রোগ্রামের যুক্তি যুক্ত করা উচিত।
  5. 4 টি পূর্ণসংখ্যার একটি সেট দিয়ে my_list নামে একটি তালিকা তৈরি করুন।
  6. My_list নামের তালিকার সম্মুখভাগে উপাদানটি ertোকান।
  7. My_list নামের তালিকার শেষে উপাদান 18 সন্নিবেশ করান।
  8. এটি একটি পুনরাবৃত্তকারী তৈরি করুন এবং তালিকা my_list থেকে উপাদান 10 খুঁজে পেতে এটি ব্যবহার করুন।
  9. উপরের উপাদানটি পাওয়া গেছে কিনা তা নির্ধারণ করতে if স্টেটমেন্ট ব্যবহার করুন।
  10. যদি উপরের উপাদানটি পাওয়া যায় তার আগে উপাদান 21 সন্নিবেশ করান।
  11. If স্টেটমেন্টের বডি শেষ।
  12. একটি লুপ পরিবর্তনশীল x তৈরি করতে a for loop ব্যবহার করুন। এই ভেরিয়েবলটি তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহৃত হবে।
  13. কনসোলে তালিকার মানগুলি মুদ্রণ করুন।
  14. একটি লুপ জন্য শরীরের শেষ।
  15. প্রধান () ফাংশনের শরীরের শেষ।

একটি তালিকা থেকে মুছে ফেলা হচ্ছে

একটি তালিকা থেকে আইটেম মুছে ফেলা সম্ভব। Erase () ফাংশন আপনাকে একটি তালিকা থেকে একটি আইটেম বা আইটেমের একটি পরিসীমা মুছে ফেলার অনুমতি দেয়।

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

উদাহরণ 4:

 #include #include #include int main() { std::list my_list = { 12, 5, 10, 9 }; my_list.push_front(11); my_list.push_back(18); auto it = std::find(my_list.begin(), my_list.end(), 10); if (it != my_list.end()) { my_list.insert(it, 21); } for (int x : my_list) { std::cout << x << '
'; } } 

আউটপুট:

এখানে কোডটির স্ক্রিনশট রয়েছে:

কোড ব্যাখ্যা:

  1. অ্যালগরিদম হেডার ফাইলটি তার ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  2. এর ফাংশন ব্যবহার করতে iostream হেডার ফাইল অন্তর্ভুক্ত করুন।
  3. লিস্টের হেডার ফাইলটি এর ফাংশন ব্যবহার করতে অন্তর্ভুক্ত করুন।
  4. আমাদের প্রোগ্রামে এসটিডি নেমস্পেস অন্তর্ভুক্ত করুন যাতে এটির ক্লাস না বলা হয়।
  5. প্রধান () ফাংশন কল করুন। এই ফাংশনের মূল অংশে প্রোগ্রামের যুক্তি যুক্ত করা উচিত।
  6. 4 টি পূর্ণসংখ্যার একটি সেট দিয়ে my_list নামে একটি তালিকা তৈরি করুন।
  7. কনসোলে কিছু লেখা প্রিন্ট করুন।
  8. একটি লুপ পরিবর্তনশীল x তৈরি করতে a for loop ব্যবহার করুন। এই ভেরিয়েবলটি তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহৃত হবে।
  9. কনসোলে তালিকার মানগুলি মুদ্রণ করুন।
  10. লুপের শরীরের শেষ অংশ।
  11. একটি পুনরাবৃত্তকারী তৈরি করুন যা তালিকার প্রথম উপাদানটির দিকে নির্দেশ করে।
  12. ইরেটর দ্বারা নির্দেশিত erase () ফাংশন ব্যবহার করুন i।
  13. কনসোলে কিছু লেখা প্রিন্ট করুন।
  14. একটি লুপ পরিবর্তনশীল x তৈরি করতে a for loop ব্যবহার করুন। এই ভেরিয়েবলটি তালিকার উপাদানগুলির উপর পুনরাবৃত্তি করতে ব্যবহৃত হবে।
  15. কনসোলে তালিকার মানগুলি মুদ্রণ করুন। এটি মুছে ফেলার পরে আসে।
  16. লুপের শরীরের শেষ অংশ।
  17. সফলভাবে সমাপ্ত হলে প্রোগ্রাম অবশ্যই একটি মান ফেরত দিতে হবে।
  18. প্রধান () ফাংশনের শরীরের শেষ।

সারসংক্ষেপ:

  • Std :: list হল একটি স্টোরেজ কন্টেইনার।
  • এটি ধ্রুবক সময়ে যেকোন স্থান থেকে আইটেম সন্নিবেশ এবং মুছে ফেলার অনুমতি দেয়।
  • এটি একটি দ্বিগুণ লিঙ্ক হিসাবে বাস্তবায়িত হয়
  • Std :: list ডেটা দ্বিমুখী এবং ক্রমানুসারে অ্যাক্সেস করা যায়।
  • std :: তালিকা দ্রুত এলোমেলো অ্যাক্সেস সমর্থন করে না। যাইহোক, এটি সব দিক থেকে ক্রমিক অ্যাক্সেস সমর্থন করে।
  • আপনি বিভিন্ন মেমরির অংশে std :: list এর তালিকা উপাদান ছড়িয়ে দিতে পারেন।
  • আপনি রানটাইম চলাকালীন প্রয়োজন অনুযায়ী উভয় প্রান্ত থেকে std :: তালিকা সঙ্কুচিত বা প্রসারিত করতে পারেন।
  • Std :: list এ আইটেম insোকানোর জন্য, আমরা insert () ফাংশন ব্যবহার করি।
  • Std :: তালিকা থেকে আইটেম মুছে ফেলার জন্য, আমরা erase () ফাংশন ব্যবহার করি।