더북(TheBook)

stack은 생성할 때 초기화 리스트에 있는 객체로 초기화할 수 없지만, 기반 컨테이너와 같은 타입인 컨테이너의 원소들을 복제해서 stack을 생성하는 건 가능하다.

std::list<double> values {1.414, 3.14159265, 2.71828};
std::stack<double, std::list<double>> my_stack (values);

두 번째 문장은 values의 원소들을 복제해서 my_stack을 생성한다. stack 생성자에는 초기화 리스트를 사용할 수 없다. 따라서 반드시 ()를 써야 한다. 두 번째 인수에 기반 컨테이너 타입을 지정하지 않으면 deque 컨테이너를 사용하므로 list의 내용을 사용해서 스택을 초기화할 수 없다. 즉, 스택 초기화에는 deque만 쓸 수 있다.

stack<T> 템플릿에는 복제 생성자가 정의되어 있으므로 기존 stack 컨테이너를 복제할 수 있다.

std::stack<double, std::list<double>> copy_stack {my_stack};

copy_stackmy_stack의 복제본이 된다. 코드를 보면 여기서는 초기화 리스트를 사용했다. 복제 생성자를 호출할 때는 초기화 리스트를 사용할 수 있다. 물론, ()를 사용할 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.