이번 글에서는 C++ STL에서 제공하는 array::fill() 함수와 array::swap() 함수의 개념과 사용법을 예제 코드와 함께 자세히 알아보겠습니다.
array::fill() 함수란?
array::fill() 함수는 배열의 모든 요소를 지정한 값으로 한 번에 채우는 기능을 합니다. 반복문을 직접 작성하지 않아도 간단한 함수 호출 하나로 배열 전체를 초기화할 수 있어 코드가 훨씬 간결해집니다. 시간 복잡도는 배열 크기에 비례하여 O(N)입니다.
다음 예제를 통해 실제 동작 방식을 살펴보겠습니다.
예제 코드
#include<iostream>
#include<array>
using namespace std;
main() {
array<int, 10> arr = {00, 11, 22, 33, 44, 55, 66, 77, 88, 99};
cout << "Array elements: ";
for(auto it = arr.begin(); it != arr.end(); it++){
cout << *it << " ";
}
//배열을 값 5로 채우기
arr.fill(5);
cout << "\nArray elements after fill: ";
for(auto it = arr.begin(); it != arr.end(); it++){
cout << *it << " ";
}
}출력 결과
Array elements: 0 11 22 33 44 55 66 77 88 99 Array elements after fill: 5 5 5 5 5 5 5 5 5 5
실행 결과를 보면 arr.fill(5)를 호출한 이후 배열의 모든 요소가 5로 일괄 변경된 것을 확인할 수 있습니다. 이처럼 fill() 함수는 배열 초기화나 특정 값으로 재설정할 때 유용하게 활용됩니다.
array::swap() 함수란?
array::swap() 함수는 두 배열의 내용을 서로 맞바꾸는(교환하는) 데 사용됩니다. 단, 교환하려는 두 배열은 자료형과 크기가 반드시 동일해야 합니다. swap() 역시 요소들을 하나씩 교환하기 때문에 시간 복잡도는 O(N)입니다.
예제 코드
#include<iostream>
#include<array>
using namespace std;
main() {
array<int, 10> arr1 = {00, 11, 22, 33, 44, 55, 66, 77, 88, 99};
array<int, 10> arr2 = {85, 41, 23, 65, 74, 02, 51, 74, 98, 22};
cout << "Array1 elements: ";
for(auto it = arr1.begin(); it != arr1.end(); it++){
cout << *it << " ";
}
cout << "\nArray2 elements: ";
for(auto it = arr2.begin(); it != arr2.end(); it++){
cout << *it << " ";
}
//두 배열의 요소 교환
arr1.swap(arr2);
cout << "\nArray1 elements (After swap): ";
for(auto it = arr1.begin(); it != arr1.end(); it++){
cout << *it << " ";
}
cout << "\nArray2 elements (After swap): ";
for(auto it = arr2.begin(); it != arr2.end(); it++){
cout << *it << " ";
}
}출력 결과
Array1 elements: 0 11 22 33 44 55 66 77 88 99 Array2 elements: 85 41 23 65 74 2 51 74 98 22 Array1 elements (After swap): 85 41 23 65 74 2 51 74 98 22 Array2 elements (After swap): 0 11 22 33 44 55 66 77 88 99
출력 결과에서 확인할 수 있듯이, arr1.swap(arr2)를 호출하면 두 배열의 모든 요소가 서로 교환됩니다. swap() 함수를 사용하면 임시 변수나 별도의 복사 과정 없이도 두 배열의 데이터를 손쉽게 맞바꿀 수 있습니다.
정리
- array::fill(): 배열의 모든 요소를 지정한 값으로 일괄 채웁니다.
- array::swap(): 크기와 자료형이 같은 두 배열의 내용을 서로 교환합니다.
- 두 함수 모두 <array> 헤더에 포함되어 있으며, 시간 복잡도는 O(N)입니다.