kesakiyo   1년 전

pichulia

제가 용이 산다 문제를 풀던 도중에 이해할 수 없는 일을 만나서 질문을 올립니다.

1. queue<int> q[1000010];

2. vector<int> q[1000010], int point[1000010];

1, 2번 모두 큐라고 가정을 하고(2번 같은 경우는 각각의 idx마다 현재의 위치를 알 수 있는 point배열을 두어서 큐로 활용) 문제를 풀었는데

1번은 메모리 초과를 받고 2번같은 경우는 AC을 받았습니다.

STL에서 queue와 vector가 메모리를 할당해 주는 방법이 다른건가요??

왜 1번은 메모리 초과를 받았는지 궁금하네요...


yukariko   1년 전

queue는 어뎁터로 작용하는 컨테이너라서 내부가 무엇으로 되어있는지 정할 수 있습니다.

queue의 요청을 만족스럽게 처리할 수 있는 컨테이너로는 deque 와 list가 있는데

기본 컨테이너로는 deque가 사용됩니다. deque와 vector의 구조상의 차이로 메모리 초과가 뜨지 않았나 싶네요..

댓글을 작성하려면 로그인해야 합니다.