std::vector::resize
#include <vector>
void resize (size_type n);
void resize (size_type n, const value_type& val);
Thay đổi kích thước vector.
Tham số
n
- Kích thước vùng chứa mới, được thể hiện bằng số lượng phần tử.
n
là kiểu số nguyên không âm.- Nếu
n
nhỏ hơn kích thước hiện tại, các phần tử dư sẽ bị xóa khỏi cuối vector. - Nếu
n
lớn hơn kích thước hiện tại, vector sẽ được mở rộng, thêm các phần tử mới ở cuối. - Nếu kích thước mới (
n
) nhỏ hơn hoặc bằngcapacity()
hiện tại, vector sẽ không cấp phát lại bộ nhớ.
val
- Ta có thể chỉ định giá trị tùy chỉnh cho phần tử mới bằng cách truyền tham số thứ hai (
val
) choresize()
. - Khi mở rộng kích thước và không có giá trị cụ thể cho phần tử mới,
resize()
sử dụng giá trị mặc định của kiểu dữ liệu (T()
). Ví dụ: nếu kiểu dữ liệu làint
, các phần tử mới sẽ có giá trị mặc định là 0.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
resize()
thay đổi kích thước của vector đến một kích thước mới được chỉ định (n
).resize()
có thể làm thay đổi bộ nhớ được cấp phát cho vector, nhất là khi kích thước mới lớn hơncapacity()
hiện tại.- Việc mở rộng bộ nhớ có thể gây ra cấp phát lại (reallocation), ảnh hưởng đến hiệu suất.
resize()
giữ nguyên các phần tử hiện có trong vector (phần đầu). Chỉ các phần tử bổ sung hoặc xóa mới bị ảnh hưởng.resize()
điều chỉnh kích thước của vector, giữ nguyên dữ liệu hiện có, thêm phần tử mặc định hoặc tùy chỉnh nếu mở rộng.- Cấp phát lại bộ nhớ chỉ xảy ra khi
n
vượt quácapacity()
. resize()
là công cụ quan trọng để quản lý số lượng phần tử trong vector mà không cần xóa hay thêm thủ công.
Ví dụ
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3};
// Tăng kích thước lên 5, các phần tử mới có giá trị mặc định là 0
numbers.resize(5);
for (int num : numbers) std::cout << num << " "; // Output: 1 2 3 0 0
std::cout << std::endl;
// Giảm kích thước xuống 2, các phần tử sau bị xóa
numbers.resize(2);
for (int num : numbers) std::cout << num << " "; // Output: 1 2
std::cout << std::endl;
// Tăng kích thước lên 4 với giá trị phần tử mới là 7
numbers.resize(4, 7);
for (int num : numbers) std::cout << num << " "; // Output: 1 2 7 7
return 0;
}
Các hàm liên quan
size | Trả về số lượng phần tử hiện có trong vector |
clear | Xóa tất cả các phần tử trong vector |
max_size | Trả về số lượng phần tử tối đa mà vector có thể chứa |