std::fill
#include <algorithm>
template <class ForwardIterator, class T>
void fill (ForwardIterator first, ForwardIterator last, const T& val);
Gán một giá trị cho tất cả các phần tử trong một phạm vi (range) được chỉ định.
Tham số
first
- Forward Iterator trỏ đến phần tử đầu tiên trong phạm vi cần gán giá trị.
last
- Forward Iterator trỏ đến phần tử ngay sau phần tử cuối cùng trong phạm vi cần gán giá trị. Phạm vi là
[first, last)
.
val
- Giá trị cần gán cho các phần tử trong phạm vi.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Phạm vi
[first, last)
là "nửa mở", không bao gồm phần tửlast
. fill()
ghi đè giá trị hiện tại của các phần tử trong phạm vi bằng giá trị mới.fill()
yêu cầu Forward Iterator, cho phép di chuyển một chiều về phía trước.val
phải có kiểu tương thích để gán được cho kiểu phần tử trong container.fill()
thường được sử dụng để:- Khởi tạo một container với một giá trị mặc định (ví dụ: khởi tạo một vector toàn số 0, khởi tạo một mảng toàn ký tự null).
- Đặt lại giá trị của tất cả các phần tử trong một container về một giá trị cụ thể.
- Gán giá trị cho một phần của container.
Phân biệt với fill_n()
fill()
gán giá trị cho tất cả các phần tử trong phạm vi được chỉ định bởifirst
vàlast
.fill_n()
gán giá trị chon
phần tử, bắt đầu từfirst
.
Ví dụ
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers(5); // Vector 5 phần tử
// Gán giá trị 0 cho tất cả các phần tử trong numbers
std::fill(numbers.begin(), numbers.end(), 0);
std::cout << "numbers after fill: ";
for (int x : numbers) {
std::cout << x << " ";
}
std::cout << std::endl;
char buffer[10];
// Gán ký tự '*' cho 5 phần tử đầu tiên của buffer
std::fill(buffer, buffer + 5, '*');
std::cout << "buffer after fill: ";
for (int i = 0; i < 10; i++) {
std::cout << buffer[i] << " ";
}
std::cout << std::endl;
return 0;
}
Các hàm liên quan
fill_n | Gán một giá trị cho n phần tử liên tiếp, bắt đầu từ một vị trí được chỉ định |
generate | Gán các giá trị được sinh ra bởi một hàm (hoặc đối tượng hàm) cho các phần tử trong một phạm vi (range) được chỉ định |
replace | Thay thế tất cả các lần xuất hiện của một giá trị cũ bằng một giá trị mới trong một phạm vi (range) |
for_each | Áp dụng một hàm (hoặc đối tượng hàm) cho mỗi phần tử trong một phạm vi được chỉ định |