Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

array::fill() và array::swap() trong C++ STL

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::array có 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ểmstd::arraystd::vector
Kích thướcCố đị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