PHP 데이터 구조 대기 열(SplQueue)과 우선 대기 열(SplPriorityQueue)은 인 스 턴 스 를 간단하게 사용 합 니 다.

대기 열 이라는 데이터 구 조 는 우리 가 생활 속 에서 줄 을 서 는 것 처럼 먼저 나 가 는 것 이 특징 이다(FIFO).

PHP SPL 에서 SplQueue 류 는 대기 열 작업 을 실현 하 는 것 입 니 다.스 택 과 마찬가지 로 더 블 링크 목록(SplDoubly LinkedList)을 계승 하여 쉽게 실현 할 수 있 습 니 다.
SplQueue 클래스 요약 은 다음 과 같 습 니 다.

SplQueue 는 아래 와 같이 간단하게 사용 합 니 다:

$queue = new SplQueue();
 
/**
 * IteratorMode , IteratorMode :
 * (1)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP  ( , )
 * (2)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE ( )
 */
$queue->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE);
 
//SplQueue::enqueue() SplDoublyLinkedList::push()
$queue->enqueue('a');
$queue->enqueue('b');
$queue->enqueue('c');
 
//SplQueue::dequeue() SplDoublyLinkedList::shift()
print_r($queue->dequeue());
 
foreach($queue as $item) {
    echo $item . PHP_EOL;
}
 
print_r($queue);
우선 대기 열 Spl Priority Queue 는 쌓 기(뒷글 소개)를 바탕 으로 이 루어 집 니 다.
SplPriority Queue 의 클래스 요약 은 다음 과 같 습 니 다.

SplPriorityQueue 간단하게 사용:

$pq = new SplPriorityQueue();
 
$pq->insert('a', 10);
$pq->insert('b', 1);
$pq->insert('c', 8);
 
echo $pq->count() .PHP_EOL; //3
echo $pq->current() . PHP_EOL; //a
 
/**
 *         
 * SplPriorityQueue::EXTR_DATA     
 * SplPriorityQueue::EXTR_PRIORITY       
 * SplPriorityQueue::EXTR_BOTH            
 */
$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA);
 
while($pq->valid()) {
  print_r($pq->current()); //a c b
  $pq->next();
}

좋은 웹페이지 즐겨찾기