Chuyển tới nội dung chính

std::list::resize

#include <list>

void resize(size_type count);
void resize(size_type count, const value_type& value);</span>

Thay đổi kích thước của std::list, tức là thay đổi số lượng phần tử mà std::list chứa.

Tham số

count

  • Kích thước mới của std::list (số lượng phần tử).

value

  • (phiên bản thứ hai): Giá trị để khởi tạo các phần tử mới được thêm vào (nếu có).

Giá trị trả về

Không có giá trị trả về

Đặc điểm

  1. Thay đổi kích thước: resize() thay đổi trực tiếp số lượng phần tử trong std::list.
  2. Xóa hoặc thêm phần tử: resize() có thể xóa bớt các phần tử ở cuối hoặc thêm các phần tử mới vào cuối std::list, tùy thuộc vào count mới.
  3. Khởi tạo giá trị: Các phần tử mới được thêm vào (nếu có) sẽ được khởi tạo bằng giá trị mặc định của kiểu phần tử hoặc bằng giá trị value được cung cấp.
  4. Không làm thay đổi các phần tử đã tồn tại trước đó: resize() chỉ ảnh hưởng đến số lượng phần tử, không thay đổi giá trị của các phần tử đã tồn tại trước khi gọi resize().
  5. Có thể làm thay đổi iterator: Việc thay đổi kích thước của std::list có thể làm thay đổi (invalidate) các iterator đang trỏ đến std::list.
  6. Độ phức tạp: Độ phức tạp của resize() phụ thuộc vào sự chênh lệch giữa kích thước cũ và mới.
    • Nếu count nhỏ hơn kích thước hiện tại, độ phức tạp là O(n), với n là số phần tử bị xóa.
    • Nếu count lớn hơn kích thước hiện tại, độ phức tạp là O(m), với m là số phần tử được thêm mới.

Ví dụ

#include <iostream>
#include <list>

int main() {
std::list<int> mylist = {1, 2, 3, 4, 5};

std::cout << "Original size: " << mylist.size() << '\n'; // Output: Original size: 5

mylist.resize(3);
std::cout << "Size after resize(3): " << mylist.size() << '\n'; // Output: Size after resize(3): 3
std::cout << "Elements after resize(3):";
for (int x : mylist) std::cout << ' ' << x; // Output: Elements after resize(3): 1 2 3
std::cout << '\n';

mylist.resize(6);
std::cout << "Size after resize(6): " << mylist.size() << '\n'; // Output: Size after resize(6): 6
std::cout << "Elements after resize(6):";
for (int x : mylist) std::cout << ' ' << x; // Output: Elements after resize(6): 1 2 3 0 0 0
std::cout << '\n';

mylist.resize(8, 99);
std::cout << "Size after resize(8, 99): " << mylist.size() << '\n'; // Output: Size after resize(8, 99): 8
std::cout << "Elements after resize(8, 99):";
for (int x : mylist) std::cout << ' ' << x; // Output: Elements after resize(8, 99): 1 2 3 0 0 0 99 99
std::cout << '\n';

return 0;
}

Các hàm liên quan

sizeTrả về số lượng phần tử hiện có trong std::list
clearXóa tất cả các phần tử khỏi std::list
eraseXóa một hoặc nhiều phần tử khỏi std::list tại một vị trí cụ thể hoặc trong một phạm vi
max_sizeTrả về số lượng phần tử tối đa mà std::list có thể chứa