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
- Thay đổi kích thước:
resize()
thay đổi trực tiếp số lượng phần tử trong std::list. - 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. - 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.
- 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ọiresize()
. - 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.
- Độ 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.
- Nếu
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
size | Trả về số lượng phần tử hiện có trong std::list |
clear | Xóa tất cả các phần tử khỏi std::list |
erase | Xó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_size | Trả về số lượng phần tử tối đa mà std::list có thể chứa |