আমি মনে করি এসটিএল গাছ না থাকার বিভিন্ন কারণ রয়েছে। প্রাথমিকভাবে গাছগুলি পুনরাবৃত্ত তথ্য কাঠামোর একটি রূপ যা একটি ধারক (তালিকা, ভেক্টর, সেট) এর মতো খুব আলাদা সূক্ষ্ম কাঠামো থাকে যা সঠিক পছন্দগুলি জটিল করে তোলে। তারা এসটিএল ব্যবহার করে বেসিক ফর্ম তৈরি করা খুব সহজ।
একটি সীমাবদ্ধ শিকড় গাছকে একটি ধারক হিসাবে ভাবা যেতে পারে যার মান বা পেওলড রয়েছে, একটি শ্রেণির এ উদাহরণ এবং সম্ভবত শিকড় (উপ) গাছের খালি সংগ্রহ; সাবট্রিগুলির খালি সংগ্রহ সহ গাছগুলিকে পাতা হিসাবে ভাবা হয়।
template<class A>
struct unordered_tree : std::set<unordered_tree>, A
{};
template<class A>
struct b_tree : std::vector<b_tree>, A
{};
template<class A>
struct planar_tree : std::list<planar_tree>, A
{};
পুনরুক্তি নকশা ইত্যাদির বিষয়ে কাউকে একটু চিন্তা করতে হবে এবং কোন পণ্য এবং সহ-পণ্য ক্রিয়াকলাপগুলি গাছের মধ্যে সংজ্ঞায়িত করতে এবং দক্ষ হতে দেয় - এবং মূল এসটিএলটি ভালভাবে লিখতে হবে - যাতে খালি সেট, ভেক্টর বা তালিকার ধারক হয় ডিফল্ট ক্ষেত্রে কোনও পেডলোড সত্যিই খালি।
গাছগুলি অনেকগুলি গাণিতিক কাঠামোর ক্ষেত্রে অপরিহার্য ভূমিকা পালন করে (বুচার, গ্রসম্যান এবং লারসেনের শাস্ত্রীয় কাগজপত্রগুলি দেখুন; এছাড়াও কান এবং ক্রিমারের কাগজপত্রের সাথে যুক্ত হতে পারে এবং কীভাবে তারা গণনা করতে ব্যবহৃত হয়) এর কাগজপত্রগুলিও দেখুন। তাদের ভূমিকা কেবলমাত্র নির্দিষ্ট কিছু অপারেশনকে সহজতর করার জন্য এটি ভাবা ঠিক নয়। বরং তারা ডেটা স্ট্রাকচার হিসাবে তাদের মৌলিক ভূমিকার কারণে সেই কাজগুলিকে সহজ করে দেয়।
তবে গাছের পাশাপাশি ‘কো-ট্রি’ রয়েছে; সর্বোপরি গাছগুলির সম্পত্তি আছে যে আপনি যদি রুটটি মুছুন তবে আপনি সবকিছু মুছবেন।
গাছের পুনরাবৃত্তির জন্য বিবেচনা করুন, সম্ভবত তারা পুনরাবৃত্তির একটি সাধারণ স্ট্যাক হিসাবে, কোনও নোড এবং তার পিতামাতার কাছে উপলব্ধ হবে ... মূল পর্যন্ত।
template<class TREE>
struct node_iterator : std::stack<TREE::iterator>{
operator*() {return *back();}
...};
তবে আপনি নিজের পছন্দ মতো অনেকগুলি থাকতে পারেন; সম্মিলিতভাবে তারা একটি "গাছ" গঠন করে তবে যেখানে সমস্ত তীরগুলি মূলের দিকে প্রবাহিত হয়, এই সহ-গাছটি পুনরাবৃত্তির মাধ্যমে তুচ্ছ পুনরুক্তি এবং মূলের দিকে পুনরুক্ত করা যেতে পারে; তবে এটি জুড়ে বা নীচে নেভিগেট করা যায় না (অন্যান্য পুনরুক্তিবিদদের এটি জানা যায় না) বা পুনরুক্তিগুলির অন্তর্ভুক্তি সমস্ত দৃষ্টান্ত অনুসরণ না করে মুছে ফেলা যায়।
গাছগুলি অবিশ্বাস্যরূপে দরকারী, তাদের অনেক কাঠামো রয়েছে, এটি যথাযথভাবে সঠিক পদ্ধতির জন্য এটি একটি গুরুতর চ্যালেঞ্জ তৈরি করে। আমার দৃষ্টিতে এ কারণেই তারা এসটিএলে প্রয়োগ করা হয় না। তদুপরি, অতীতে, আমি লোককে ধার্মিক হতে দেখেছি এবং একটি ধরণের কনটেইনারের ধারণাটি খুঁজে পেয়েছি যার নিজস্ব ধরণের উদাহরণ রয়েছে যা চ্যালেঞ্জিং - তবে তাদের মুখোমুখি হতে হবে - এটি একটি গাছের ধরণের প্রতিনিধিত্ব করে - এটি একটি নোডযুক্ত একটি নোড সম্ভবত (ছোট) গাছের খালি সংগ্রহ। ডিফল্ট কনস্ট্রাক্টরকে চ্যালেঞ্জ না করেই বর্তমান ভাষা এটিকে অনুমতি দেয় যার জন্য container<B>
হিপ (বা অন্য কোথাও) এর জন্য স্থান বরাদ্দ করে না B
etc.
আমি যদি সন্তুষ্ট হব তবে এটি যদি ভাল ফর্মে হয় তবে এটি স্ট্যান্ডার্ডে যাওয়ার পথটি খুঁজে পায়।