কম্পিউটার

C++ দ্বিমুখী পুনরাবৃত্তিকারী


যে পুনরাবৃত্তগুলি শেষ এবং শুরু থেকে উভয় দিক থেকে একটি পরিসরের উপাদানগুলির ক্রম অ্যাক্সেস করার বিশেষাধিকার রাখে তারা দ্বিমুখী পুনরাবৃত্তিকারী নামে পরিচিত . পুনরাবৃত্ত তালিকা মানচিত্র এবং সেটের মত ডেটা প্রকারে কাজ করতে পারে।

দ্বিমুখী পুনরাবৃত্তিকারী ফরোয়ার্ডিং ইটারেটর এর মত একই বৈশিষ্ট্য আছে , শুধুমাত্র পার্থক্য যে তারা হ্রাস করা যেতে পারে −

সম্পত্তি বৈধ অভিব্যক্তি
ডিফল্ট-নির্মাণযোগ্য,
অনুলিপি নির্মাণযোগ্য,
অনুলিপি-অর্পণযোগ্য এবং ধ্বংসযোগ্য
X a;
X b(a);
b =a;
সমতা/বৈষম্য অপারেটর ব্যবহার করে সমতার জন্য তুলনা করা যেতে পারে (অর্থপূর্ণ যখন উভয় পুনরাবৃত্তিকারী মান একই অন্তর্নিহিত অনুক্রমের উপর পুনরাবৃত্তি করে)। a ==খ
a !=খ
*a
a->মি
পরিবর্তনযোগ্য পুনরাবৃত্তিকারীদের জন্য (অ-স্থির পুনরাবৃত্তিকারী):একটি lvalue হিসাবে ডিরেফারেন্স করা যেতে পারে (যদি একটি ডিরেফারেন্সযোগ্য অবস্থায় থাকে)। *a =t
বৃদ্ধি করা যেতে পারে (যদি ডিরেফারেন্সযোগ্য অবস্থায় থাকে)। ফলাফল হয় dereferenceable অথবা একটি past-the-end iterator. দুটি পুনরাবৃত্তিকারী যা সমান তুলনা করে, উভয়ের বৃদ্ধি হওয়ার পরে সমান তুলনা করতে থাকে। ++a
a++
*a++
--ক
একটি--
*ক--
Lvalues ​​অদলবদল করা যায়। swap(a,b)

যেখানে X হল একটি দ্বিমুখী পুনরাবৃত্তিকারী , a এবং b হল এই ইটারেটর টাইপের অবজেক্ট, এবং t হল ইটারেটর টাইপ দ্বারা নির্দেশিত টাইপের একটি অবজেক্ট (বা অন্য কিছু টাইপ যা lvalue এ বরাদ্দ করা যেতে পারে X টাইপের একটি বস্তুকে ডিরেফারেন্স করে ফেরত দেওয়া হয়।

C++ এ দ্বিমুখী পুনরাবৃত্তির ধারণা।

  • দ্বিমুখী পুনরাবৃত্তিকারীগুলি ফরওয়ার্ডিং ইটারেটরগুলির সমস্ত বৈশিষ্ট্য এবং উপসর্গ এবং পোস্টফিক্স হ্রাস অপারেটরগুলিকে সমর্থন করে৷

  • এই ধরণের পুনরাবৃত্তিকারী উভয় দিকের উপাদানগুলি অ্যাক্সেস করতে পারে, যেমন শেষ এবং শুরুতে।

  • র্যান্ডম অ্যাক্সেস ইটারেটরও এক ধরনের দ্বিমুখী পুনরাবৃত্তিকারী।

  • দ্বিমুখী পুনরাবৃত্তিকারীদের ফরওয়ার্ডিং ইটারেটরের বৈশিষ্ট্য রয়েছে, তবে পার্থক্য হল এই পুনরাবৃত্তিকারীকেও হ্রাস করা যেতে পারে।

Input: 1 2 3 4 5 6 7 8 9 10
Output: 10 9 8 7 6 5 4 3 2 1

উদাহরণ

#include <iostream>
#include<iterator>
#include<vector>
using namespace std;
int main() {
   vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
   vector<int> ::iterator it;
   vector<int> :: reverse_iterator rev_it;
   for(it = vec.begin(); it != vec.end(); it++)
      cout<<*it<<" ";
      cout<< endl;
   for(rev_it = vec.rbegin(); rev_it!= vec.rend(); rev_it++)
      cout<<*rev_it<<" ";
}

আউটপুট

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1

  1. C++ এ বাইনারি সার্চ ট্রি ইটারেটার

  2. C++ এ আউটপুট ইটারেটর

  3. C++ এ ইটারেটর বাতিলকরণ

  4. C# এ পুনরাবৃত্তিকারী