Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm list::resize() trong C++ STL


Bài viết thảo luận về cách hoạt động, cú pháp và ví dụ của hàm list::resize() trong C++ STL.

List trong STL là gì?

List là cấu trúc dữ liệu cho phép chèn và xóa ở bất kỳ vị trí nào trong thời gian không đổi. List được triển khai dưới dạng danh sách liên kết đôi. List cho phép cấp phát bộ nhớ không liên tục. List hiệu quả hơn array, vector, deque về chèn, xóa, di chuyển phần tử. Truy cập trực tiếp phần tử trong list chậm hơn, list tương tự forward_list nhưng forward_list là danh sách liên kết đơn chỉ duyệt được một chiều.

list::resize() là gì?

list::resize() là hàm built-in trong C++ STL, khai báo trong header <list>. Hàm này thay đổi kích thước list container để chứa số phần tử chỉ định. Nếu kích thước mới lớn hơn, thêm phần tử mặc định (0 cho int). Nếu nhỏ hơn, cắt bớt phần tử cuối.

Cú pháp

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

Hàm nhận 1 hoặc 2 tham số.

Tham số

  • n: kích thước mới (số phần tử)
  • val: giá trị điền vào các phần tử mới thêm (nếu có)

Giá trị trả về

Hàm không trả về giá trị. Chỉ thay đổi kích thước container.

Ví dụ

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

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

Kết quả

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