Trong phần này chúng ta tìm hiểu array::fill() và array::swap() trong C++ STL.
array::fill()
Điền tất cả phần tử của array bằng một giá trị xác định.
Ví dụ
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 10> arr = {0, 11, 22, 33, 44, 55, 66, 77, 88, 99};
cout << "Truoc fill: ";
for(auto x : arr) cout << x << " ";
arr.fill(5); // Điền toàn bộ bằng 5
cout << "\nSau fill: ";
for(auto x : arr) cout << x << " ";
return 0;
}
Kết quả
Truoc fill: 0 11 22 33 44 55 66 77 88 99 Sau fill: 5 5 5 5 5 5 5 5 5 5
array::swap()
Hoán đổi nội dung của hai array cùng kiểu và cùng kích thước.
Ví dụ
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 10> arr1 = {0, 11, 22, 33, 44, 55, 66, 77, 88, 99};
array<int, 10> arr2 = {85, 41, 23, 65, 74, 2, 51, 74, 98, 22};
cout << "Arr1: ";
for(auto x : arr1) cout << x << " ";
cout << "\nArr2: ";
for(auto x : arr2) cout << x << " ";
arr1.swap(arr2); // Hoán đổi
cout << "\nArr1 (sau swap): ";
for(auto x : arr1) cout << x << " ";
cout << "\nArr2 (sau swap): ";
for(auto x : arr2) cout << x << " ";
return 0;
}
Kết quả
Arr1: 0 11 22 33 44 55 66 77 88 99 Arr2: 85 41 23 65 74 2 51 74 98 22 Arr1 (sau swap): 85 41 23 65 74 2 51 74 98 22 Arr2 (sau swap): 0 11 22 33 44 55 66 77 88 99
Lưu ý quan trọng
std::arraycó kích thước cố định tại compile-time (khác vector).swap()chỉ hoạt động với hai array cùng kiểu và cùng size.fill()gán giá trị cho tất cả phần tử, không thể fill một phần.- Cả hai đều là O(N) với N = size của array.
So sánh với vector
| Đặc điểm | std::array | std::vector |
|---|---|---|
| Kích thước | Cố định (compile-time) | Động (runtime) |
| fill() | Có | Có (assign) |
| swap() | Có (cùng size) | Có (bất kỳ size) |
| Bộ nhớ | Stack (thường) | Heap |