2011-05-02 11 views
4

두 개의 std::queue 개체를 결합하는 함수가 stl에 있습니까?두 개의 std :: queue 병합

+0

정말 대기열을 사용해야합니까? 대신 std :: list를 사용하면 두 목록을 일정 시간 (즉, 정렬 할 필요가 없다고 가정)으로 연결할 수 있습니다. – GWW

+2

그렇게하는 것이 무슨 뜻입니까? 병합 된 큐에서 항목이 어떻게 정렬됩니까? –

답변

5

std::queue 어댑터는 반복을 지원하지 않으므로 실제로이 방법을 수행해야합니다. 그러나이 기능이 필요하다면 아마도 다른 컨테이너를 고려해야합니다. 랜덤 액세스가 필요한 경우 아마도 std::deque 일 것입니다. 대기열과 같이 앞/뒤로 액세스 만 필요한 경우 std::list은 일정 시간에 splice d가 될 수 있습니다.

+2

목록을 사용하는 것을 제외하면 큰 목록을 자주 연결하는 경우에만 유용합니다. 왜냐하면 목록이 * everything * else을 수행하는 것이 훨씬 느리기 때문입니다. – GManNickG

0

이 STL에서 제공하는 옵션이 될 것 같지 않습니다,하지만 난 당신이 자신을 쓸 수있는 몇 가지 다른 것들을 생각할 수 있습니다 :

  1. 다른에 하나의 큐를 읽고 자신의 코드를 작성하지만, 이것이 에).

  2. std::copy을 사용하면 기본 O컨테이너를 다시 조작 할 수 있습니다. 다시 O (n)입니다.

  3. std::queue으로 구현되지만 O (1)에서 조인을 시뮬레이트하기 위해 여러 대기열을 유지할 수있는 자체 컨테이너를 생성하십시오.