이 글에서는 C++ STL에서 deque::assign() 함수가 어떻게 동작하는지 살펴보겠습니다.
Deque(덱)는 Double Ended Queue, 즉 양방향 큐를 의미합니다. 앞과 뒤 양쪽에서 모두 요소를 삽입하거나 삭제할 수 있는 컨테이너입니다.
C++에서 deque::assign()은 내장 함수로, deque 컨테이너에 새로운 값을 할당하는 데 사용됩니다. 이 함수를 호출할 때마다 기존에 저장되어 있던 값들을 모두 대체하며, 새로 할당되는 값에 맞춰 컨테이너의 크기도 자동으로 조정됩니다.
문법(Syntax)
deque::assign()의 문법은 다음과 같습니다.
dequename.assign(<int> size, <int> val)
매개변수(Parameters)
이 함수는 두 개의 매개변수를 받습니다.
- size: deque 컨테이너에 할당할 요소의 개수
- val: deque 컨테이너에 채워 넣을 값
또한 size와 val 대신 반복자(iterator)를 매개변수로 전달하여 시작 지점과 끝 지점을 지정할 수도 있습니다. 두 방식 모두 아래 예제에서 확인할 수 있습니다.
반환값(Return Value)
이 함수는 별도의 반환값이 없습니다.
예제
Input: dq.assign(5, 1) Output: deque elements are: 1 1 1 1 1 Input: dq.assign(5, 2) dq1.assign(dq.start()+2, dq.end()) Output: deque elements are: 2 2 2 2 2 deque elements are: 2 2 2
설명: deque dq에는 5개의 요소(2 2 2 2 2)가 들어 있습니다. 반면 dq1은 dq의 처음 두 요소를 건너뛰고 세 번째 요소부터 끝까지 복사했기 때문에 3개의 요소(2 2 2)만 갖게 됩니다.
크기(size)와 값(value)으로 할당하기
예제 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
deque<int> deq;
// 값 1을 5개 할당
deq.assign(5, 1); // 여기서 5는 크기, 1은 값
cout << "deque elements are: ";
for (auto it = deq.begin(); it != deq.end(); it++)
cout << *it << " ";
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
deque elements are: 1 1 1 1 1
반복자(iterator)로 할당하기
예제 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
deque<int> deq;
// 값 2를 5개 할당
deq.assign(5, 2);
cout << "deque elements are: ";
for (auto it = deq.begin(); it != deq.end(); it++)
cout << *it << " ";
deque<int> deq1;
// 세 번째 위치부터 마지막까지의 모든 요소를 deq1에 할당
deq1.assign(deq.begin() + 2, deq.end());
cout << "\ndeque1 elements are: ";
for (auto it = deq1.begin(); it != deq1.end(); it++)
cout << *it << " ";
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
deque elements are: 2 2 2 2 2 deque1 elements are: 2 2 2
정리
deque::assign() 함수는 기존 내용을 모두 지우고 새 값을 한 번에 할당하고 싶을 때 유용하게 사용됩니다. 크기와 값으로 직접 지정하는 방법과, 다른 컨테이너의 특정 범위를 반복자로 지정하는 방법 두 가지를 상황에 맞게 활용하면 됩니다.