std::forward_list::resize
#include <forward_list>
void resize(size_type count);
void resize(size_type count, const value_type& value);
Thay đổi kích thước của forward_list, tức là thay đổi số lượng phần tử mà forward_list chứa.
Tham số
count
- Kích thước mới của forward_list (số lượng phần tử).
value
- 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 forward_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 forward_list, tùy thuộc vàocount
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 forward_list có thể làm thay đổi (invalidate) các iterator đang trỏ đến forward_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 <forward_list>
int main() {
std::forward_list<int> mylist = {1, 2, 3, 4, 5};
std::cout << "Original size: " << std::distance(mylist.begin(), mylist.end()) << '\n'; // Output: Original size: 5
mylist.resize(3);
std::cout << "Size after resize(3): " << std::distance(mylist.begin(), mylist.end()) << '\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): " << std::distance(mylist.begin(), mylist.end()) << '\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): " << std::distance(mylist.begin(), mylist.end()) << '\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
clear | Xóa tất cả các phần tử khỏi forward_list, làm cho forward_list trở thành rỗng |
erase_after | Xóa một hoặc nhiều phần tử khỏi forward_list tại vị trí sau một iterator cho trước |
insert_after | Chèn một hoặc nhiều phần tử mới vào sau một vị trí iterator cho trước trong forward_list |
max_size | Trả về số lượng phần tử tối đa mà forward_list có thể chứa |
remove | Xóa tất cả các phần tử có giá trị bằng với một giá trị cho trước khỏi forward_list |
merge | Hợp nhất (merge) hai forward_list đã được sắp xếp thành một forward_list duy nhất |