이 글에서는 C++에서 list의 emplace() 함수가 어떻게 동작하는지 자세히 알아보겠습니다.
list::emplace() 함수는 C++ 표준 템플릿 라이브러리(STL)의 일부로, 사용자가 지정한 특정 위치에 새로운 값을 삽입할 때 사용됩니다.
이 함수를 호출하려면 <list> 헤더 파일을 반드시 포함해야 합니다.
문법(Syntax)
List_Name.emplace(position, element)
매개변수(Parameters)
이 함수는 두 개의 매개변수를 받습니다.
- position: 새로운 요소가 삽입될 위치를 나타냅니다.
- value: 지정된 위치에 리스트에 삽입할 요소를 나타냅니다.
반환값(Return Value)
이 함수는 새로 삽입된 요소를 가리키는 반복자(iterator)를 반환합니다.
예제
Input: list<int> L = { 1,2,3 }
Output: 6 1 2 3설명 − 위 예제에서는 int 타입의 값 1, 2, 3을 가지는 리스트 "L"을 생성했습니다. 그다음 emplace() 함수는 반복자를 반환하기 때문에, 이 반환값을 받을 auto 타입의 객체 "itr"를 선언했습니다. 첫 번째 인자에는 새 요소를 삽입할 위치인 리스트의 시작 위치(L.begin())를 지정했고, 두 번째 인자로는 추가할 새로운 값인 6을 전달했습니다. 그 결과 출력은 6 1 2 3이 됩니다.
프로그램 접근 방식
- 먼저 int 타입의 리스트(예: "Lt")를 생성하고 값을 할당합니다.
- auto 타입의 객체 "itr"를 생성하고, emplace() 함수를 호출하여 초기화합니다. "itr"는 emplace() 함수의 반환값을 받는 반복자 역할을 합니다.
- 함수에 인자를 전달합니다. 첫 번째 인자는
Lt.end()로 리스트의 끝 위치를 선택하고, 두 번째 인자로는 임의의 값(예: 7)을 전달합니다.
알고리즘
Start
Step 1-> In function main()
Initialize list<int> Lt={}
Initialize auto itr=Lt.emplace(Lt.end(),7)
Loop For itr=Lt.begin() and itr!=Lt.end() and itr++
Print *itr
Stop실제 코드 예제
#include <iostream>
#include<list>
using namespace std;
int main() {
list<int> Lt = { 3,4,5 };
auto itr = Lt.emplace(Lt.begin(),7);
Lt.emplace(itr,6);
cout << "The List is: ";
for (itr = Lt.begin(); itr != Lt.end(); itr++)
cout << *itr << " ";
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
The List is: 6 7 3 4 5
코드 해설 − 먼저 {3, 4, 5} 값을 가진 리스트 Lt를 생성합니다. 첫 번째 emplace() 호출은 리스트의 시작 위치에 7을 삽입하고, 새로 삽입된 요소를 가리키는 반복자를 반환합니다. 두 번째 emplace() 호출은 반환받은 반복자 위치, 즉 7 앞에 6을 삽입합니다. 최종적으로 리스트는 6 7 3 4 5 순서로 정렬되어 출력됩니다.