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

ฟังก์ชัน list::resize() ใน C++ STL


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

List ใน STL คืออะไร

List เป็นโครงสร้างข้อมูลที่อนุญาตให้แทรกและลบได้ในเวลาคงที่ที่ตำแหน่งใดก็ตามในลำดับ List ถูกนำไปใช้เป็น doubly linked lists List อนุญาตการจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง List ทำงานการแทรก ดึง และย้ายองค์ประกอบได้ดีกว่า array, vector และ deque ใน List การเข้าถึงองค์ประกอบโดยตรงช้า และ list คล้ายกับ forward_list แต่วัตถุ forward_list เป็น singly linked lists และสามารถวนรอบได้เฉพาะไปข้างหน้า

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

list::resize() เป็นฟังก์ชันในตัวใน C++ STL ซึ่งประกาศในไฟล์หัวเรื่อง resize() ใช้ปรับขนาดคอนเทนเนอร์ list มันปรับขนาดคอนเทนเนอร์ ให้มีจำนวนองค์ประกอบเท่ากับที่เราระบุในอาร์กิวเมนต์ของฟังก์ชัน

ไวยากรณ์

list_name.resize(int n);

หรือ

list_name.resize(int n, const value_type &val);

ฟังก์ชันนี้รับพารามิเตอร์ได้ 1 หรือ 2 ตัว

พารามิเตอร์

  • n - เป็นจำนวนเต็มที่กำหนดขนาดคอนเทนเนอร์ใหม่ (จำนวนองค์ประกอบ)
  • val - ออบเจ็กต์ที่เนื้อหาจะถูกคัดลอกไปยังช่องว่างทั้งหมดในคอนเทนเนอร์

ค่าที่คืน

ฟังก์ชันนี้ไม่คืนค่าอะไร จะแค่ปรับขนาดคอนเทนเนอร์

ตัวอย่าง

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

int main() {
    // create a list
    list<int> myList;
    // insert elements to the list
    myList.push_back(1);
    myList.push_back(2);
    myList.push_back(3);
    myList.push_back(4);
    // elements in the list before Resize
    cout << "List elements are: ";
    for (auto i = myList.begin(); i != myList.end(); i++)
        cout << *i << " ";
    // Resizing list
    myList.resize(5);
    cout << "\nList after resize: ";
    for (auto i = myList.begin(); i != myList.end(); i++)
        cout << *i << " ";
    // Resizing list again
    myList.resize(6);
    cout << "\nList after resizing it again: ";
    for (auto i = myList.begin(); i != myList.end(); i++)
        cout << *i << " ";
    return 0;
}

เอาต์พุต

List elements are: 1 2 3 4
List after resize: 1 2 3 4 0
List after resizing it again: 1 2 3 4 0 0