2013-02-13 2 views
0

std::queue 또는 std::list 중 하나를 사용하여 구현할 수 있습니다. 내가 사용하는 것과 다른 점이 있습니다. std::queue은 기능이 적어서 std::list보다 가볍습니다?목록 대신로드 대기열

+2

당신이하는 일에 전적으로 달려 있습니다 ... – Yuushi

+2

[C++ 11에서 표준 라이브러리 컨테이너를 효율적으로 어떻게 선택합니까?] (http://stackoverflow.com/questions/10699265/how-can- i-efficient-select-a-standard-library-in-c11) – sehe

+0

@Yuushi 사용하기에 더 가벼운, 또는 중요하지 않은 push 또는 :: pop으로 특정 구현을 수행 할 수 있다면? 그리고 내가하고있는 일이 무엇을 의미합니까? 무슨 상관이야? 내가 바나나를 먹으면, 가벼운 대기열이됩니까 ?? – navderm

답변

3

내가 사용하는 것과 다른 점은 무엇입니까?

예 - 여러 가지 방법으로 가능합니다. 주된 고려 사항은 가독성입니다. std::deque을 사용하면 코드의 독자에게 컨테이너의 중간이 아니라 끝에서만 삽입 및 삭제하려는 의도를 전달할 수 있습니다. 이것은 다른 사람의 코드를 읽을 때 알아두면 좋은 일입니다.

두 번째 고려 사항은 컨테이너 자체의 구현입니다. 즉, 요소를 개별적으로 할당하고 저장하는 목록과 달리 std::deque은 공간을 절약하기 위해 요소를 청크에 저장합니다. 이렇게하면 컨테이너의 설치 공간이 줄어들거나 약간 더 빨라질 수 있습니다. 반면에 큐 전체를 반복 할 때 비효율적 일 수 있습니다.

그러나 효율 고려 사항은 최적화 문제이기 때문에 초기 디자인에서 고려해야 할 요소가 아니어야합니다.

최선의 방법은 최상의 가독성을 위해 노력하는 것입니다. 가능한 한 가장 깨끗한 방식으로 코드 독자에게 의도를 전달하는 컨테이너를 사용하십시오.

+0

'deque'가 아니라'dequeue' :) – us2012

+0

@ us2012 네 말이 맞아, 고마워! – dasblinkenlight

0

가벼운 기능이 적은 것 같습니다 ...?

더 많은 함수가 더 무거운 몸무게를 만들지 않습니다. 시나리오에서 가장 합리적인 컬렉션을 사용합니다. 선입 선출 방식으로 항상이 항목에 액세스하는 경우 std::queue이 적합합니다. 이중 연결 목록 기능이 필요한 경우 std::list을 사용하십시오.