Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL의 array::fill()과 array::swap() 함수 완벽 정리

이번 글에서는 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)입니다.