First in First Out 구조이다.
queue 를 이용한 예제
#include<iostream>
#include<queue>
using namespace std;
/*
// 기본적인큐를이용한예제
void main(){
queue<int> qu;
qu.push(100);
qu.push(200);
qu.push(300);
while(!qu.empty()){
cout<< qu.front() <<endl;
qu.pop();
}
}
*/
/* 조세퍼스문제 3번째문자만지워지고1,2번은마지막으로돌린다.
1 2 3 4 5 6 7 8 9 10 -> 3은지워지고
-> 4 5 6 7 8 9 10 1 2 남는다.
*/
// 정수 42개를사용
void main(){
queue<int> qu;
int one, two;
for(int i=1; i <=42; i++ )
qu.push(i);
while( qu.size() != 2)
{
one = qu.front(); // 첫번째원소저장
qu.pop(); // 그다음삭제
two = qu.front(); // 두번째원소저장
qu.pop(); // 그다음삭제..
qu.pop(); // 3번째이므로그냥삭제.
qu.push(one); // 처음두번째를마지막에저장.
qu.push(two);
}
cout<< "남은원소의크기는: "<<qu.size() <<endl;
cout<<"처음원소는: " <<qu.front() << endl;
qu.pop();
cout<<"두번째원소는: " <<qu.front() << endl;
}