라이브러리

[PHP] SplPriorityQueue::compare - 힙에 요소를 올바르게 배치하기 위해 우선순위를 비교합니다.




SplPriorityQueue::compare


PHP의 SplPriorityQueue 클래스는 우선순위 큐를 구현하는 데 사용됩니다. 우선순위 큐는 데이터를 저장하고, 데이터를 추출할 때 데이터의 우선순위를 기준으로 데이터를 정렬하는 자료구조입니다.

SplPriorityQueue::compare는 우선순위 큐에서 데이터의 우선순위를 비교하는 데 사용되는 콜백 함수입니다. 이 콜백 함수는 두 개의 데이터를 비교하여, 데이터의 우선순위를 결정하는 데 사용됩니다.

SplPriorityQueue::compare의 사용법


SplPriorityQueue::compare는 SplPriorityQueue 클래스의 생성자에 콜백 함수를 전달하여 사용할 수 있습니다. 콜백 함수는 두 개의 데이터를 비교하여, 데이터의 우선순위를 결정하는 데 사용됩니다.

#hostingforum.kr
php

$pq = new SplPriorityQueue();

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA);

$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA | SplPriorityQueue::EXTR_PRIORITY);



$pq->insert('apple', 1);

$pq->insert('banana', 2);

$pq->insert('cherry', 3);



while (!$pq->isEmpty()) {

    $data = $pq->extract();

    echo "Data: $data[0], Priority: $data[1]
";

}



SplPriorityQueue::compare의 콜백 함수


SplPriorityQueue::compare의 콜백 함수는 두 개의 데이터를 비교하여, 데이터의 우선순위를 결정하는 데 사용됩니다. 콜백 함수는 두 개의 데이터를 비교하여, 데이터의 우선순위를 결정하는 데 사용됩니다.

#hostingforum.kr
php

function compare($a, $b) {

    if ($a['priority'] < $b['priority']) {

        return -1;

    } elseif ($a['priority'] > $b['priority']) {

        return 1;

    } else {

        return 0;

    }

}



$pq = new SplPriorityQueue();

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA);

$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA | SplPriorityQueue::EXTR_PRIORITY);



$pq->insert(['name' => 'apple', 'priority' => 1], 1);

$pq->insert(['name' => 'banana', 'priority' => 2], 2);

$pq->insert(['name' => 'cherry', 'priority' => 3], 3);



$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA | SplPriorityQueue::EXTR_PRIORITY);

$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);



$pq->setCallback('compare');



while (!$pq->isEmpty()) {

    $data = $pq->extract();

    echo "Data: $data[0], Priority: $data[1]
";

}



SplPriorityQueue::compare의 예제


SplPriorityQueue::compare의 예제는 다음과 같습니다.

#hostingforum.kr
php

function compare($a, $b) {

    if ($a['priority'] < $b['priority']) {

        return -1;

    } elseif ($a['priority'] > $b['priority']) {

        return 1;

    } else {

        return 0;

    }

}



$pq = new SplPriorityQueue();

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA);

$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA | SplPriorityQueue::EXTR_PRIORITY);



$pq->insert(['name' => 'apple', 'priority' => 1], 1);

$pq->insert(['name' => 'banana', 'priority' => 2], 2);

$pq->insert(['name' => 'cherry', 'priority' => 3], 3);



$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA | SplPriorityQueue::EXTR_PRIORITY);

$pq->setExtractFlags(SplPriorityQueue::EXTR_BOTH);



$pq->setCallback('compare');



while (!$pq->isEmpty()) {

    $data = $pq->extract();

    echo "Data: $data[0], Priority: $data[1]
";

}



이 예제는 SplPriorityQueue::compare의 콜백 함수를 사용하여, 데이터의 우선순위를 결정하는 데 사용됩니다. 콜백 함수는 두 개의 데이터를 비교하여, 데이터의 우선순위를 결정하는 데 사용됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 137 페이지

검색

게시물 검색