কম্পিউটার টিউটোরিয়াল

C++ STL-এ list::rbegin() এবং list::rend() ফাংশন

STL-এ List কী?

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

list::rbegin() কী?

list::rbegin() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন যা হেডার ফাইলে ডিক্লেয়ার করা আছে। rbegin() একটি রিভার্স বিগিন ফাংশন। rbegin() একটি রিভার্স ইটারেটর রিটার্ন করে যা লিস্টের শেষ এলিমেন্টকে পয়েন্ট করে। রিভার্স ইটারেটর হল এমন একটি ইটারেটর যা রিভার্স ডিরেকশনে মুভ করে, অর্থাৎ শেষ থেকে শুরু করে শুরুর দিকে বয়ে যায়। তবে back()ও শেষ এলিমেন্ট রিটার্ন করে কিন্তু এই বাইডিরেকশনাল ইটারেটর সাধারণ ইটারেটরের বিপরীতে পিছনের দিকে মুভ করে।

সিনট্যাক্স

list_container1.rbegin();

প্যারামিটার

এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।

উদাহরণ

Input: list<int> List_container = {10, 11, 13, 15}; List_container.rbegin(); Output: List = 15

রিটার্ন ভ্যালু

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

সম্পূর্ণ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int main() {
    list<int> myList = { 10, 20, 30, 40 };
    cout << "List is: ";
    for (auto i = myList.rbegin(); i != myList.rend(); ++i)
        cout << *i << " ";
    return 0;
}

আউটপুট

List is: 40 30 20 10

list::rend() কী?

list::rend() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন যা হেডার ফাইলে ডিক্লেয়ার করা আছে। rend() একটি রিভার্স এন্ড ফাংশন। rend() একটি রিভার্স ইটারেটর রিটার্ন করে যা সংশ্লিষ্ট লিস্ট কন্টেইনারের প্রথম এলিমেন্টের আগের পজিশনকে পয়েন্ট করে। রিভার্স ইটারেটর হল এমন একটি ইটারেটর যা রিভার্স ডিরেকশনে মুভ করে, অর্থাৎ শেষ থেকে শুরু করে শুরুর দিকে বয়ে যায়। তবে back()ও শেষ এলিমেন্ট রিটার্ন করে কিন্তু এই বাইডিরেকশনাল ইটারেটর সাধারণ ইটারেটরের বিপরীতে পিছনের দিকে মুভ করে।

সিনট্যাক্স

list_container1.rend();

প্যারামিটার

এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।

উদাহরণ

Input: list<int> List_container = { 10, 11, 13, 15}; List_container.rend(); Output: List = 5 // লিস্টের শুরুতে থাকা এলিমেন্টের আগে থাকা র‍্যান্ডম ভ্যালু দেখাবে

রিটার্ন ভ্যালু

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

সম্পূর্ণ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int main() {
    list<int> myList = { 10, 20, 30, 40 };
    cout << "List is : ";
    for (auto i = myList.rbegin(); i != myList.rend(); ++i)
        cout << *i << " ";
    return 0;
}

আউটপুট

List is: 40 30 20 10
  1. C++ STL-এ List reverse ফাংশন

  2. C++ STL-এ list crbegin() এবং crend() ফাংশন

  3. C++ STL-এ list cbegin() এবং cend() ফাংশন

  4. C++ STL-এ list back() ফাংশন