Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน list::rbegin() และ list::rend() ใน C++ STL


ในบทความนี้เราจะอธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน list::rbegin() และ list::rend() ใน C++ Standard Template Library (STL)

List ใน STL คืออะไร?

List เป็นโครงสร้างข้อมูลที่รองรับการแทรกและลบข้อมูลได้ในเวลาคงที่ (constant time) ที่ตำแหน่งใดก็ได้ในลำดับ List ถูกนำไปใช้งานเป็น doubly linked list (รายการเชื่อมโยงสองทิศทาง) ทำให้จัดสรรหน่วยความจำแบบไม่ต่อเนื่องได้ List ให้ประสิทธิภาพการแทรก ดึง และย้ายข้อมูลที่ตำแหน่งใดก็ได้ในคอนเทนเนอร์ดีกว่า array, vector และ deque อย่างไรก็ตาม การเข้าถึงข้อมูลโดยตรง (random access) ใน List ช้ากว่า และ List คล้ายกับ forward_list แต่ forward_list เป็น singly linked list (รายการเชื่อมโยงทิศทางเดียว) จึงวนลูปได้เฉพาะทิศทางไปข้างหน้าเท่านั้น

list::rbegin() คืออะไร?

list::rbegin() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศในไฟล์ header <list> ฟังก์ชันนี้คือ reverse begin ส่งคืน reverse iterator ที่ชี้ไปยัง องค์ประกอบตัวสุดท้าย ของ list Reverse iterator เป็น iterator ที่เคลื่อนที่ในทิศทางถอยหลัง เริ่มจากท้ายไปยังหน้า แม้ back() จะส่งคืนองค์ประกอบสุดท้ายเช่นกัน แต่ reverse iterator นี้เป็น bidirectional iterator ที่เคลื่อนที่ได้ในทิศทางย้อนหลัง

ไวยากรณ์ (Syntax)

list_container.rbegin();

พารามิเตอร์ (Parameters)

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

ตัวอย่างการใช้งาน

Input: list<int> List_container = {10, 11, 13, 15};
List_container.rbegin();
Output: List = 15 (iterator ชี้ไปที่ 15)

ค่าที่ส่งคืน (Return Value)

ฟังก์ชันนี้ส่งคืน reverse iterator ที่ชี้ไปยังองค์ประกอบตัวสุดท้ายของ list

ตัวอย่างโค้ดเต็ม

#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;
}

ผลลัพธ์ (Output)

List is: 40 30 20 10

list::rend() คืออะไร?

list::rend() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศในไฟล์ header <list> ฟังก์ชันนี้คือ reverse end ส่งคืน reverse iterator ที่ชี้ไปยัง ตำแหน่งก่อนองค์ประกอบตัวแรก ของ list container (one past the beginning) Reverse iterator นี้เคลื่อนที่ในทิศทางถอยหลัง เริ่มจากท้ายไปยังหน้า

ไวยากรณ์ (Syntax)

list_container.rend();

พารามิเตอร์ (Parameters)

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

ตัวอย่างการใช้งาน

Input: list<int> List_container = {10, 11, 13, 15};
List_container.rend();
Output: Iterator ชี้ไปตำแหน่งก่อน 10 (ค่าสุ่ม/ไม่กำหนด)

ค่าที่ส่งคืน (Return Value)

ฟังก์ชันนี้ส่งคืน reverse iterator ที่ชี้ไปยังตำแหน่งก่อนองค์ประกอบตัวแรกใน list

ตัวอย่างโค้ดเต็ม

#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;
}

ผลลัพธ์ (Output)

List is: 40 30 20 10