Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】SplMinHeap::next()メソッドの使い方

nextメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

nextメソッドはSplMinHeapクラスに属し、イテレータの内部ポインタを次に進めるメソッドです。SplMinHeapは、常に現在の最小値が取り出せるように要素を管理する、特殊な順序付きデータ構造である最小ヒープを実装しています。このクラスはIteratorインターフェースを実装しているため、foreachループなどのイテレータとして扱うことができます。

一般的にイテレータのnext()メソッドは、次の異なる要素に移動するために使用されますが、SplMinHeapnext()メソッドの動作は少し特殊です。next()メソッドが呼び出されても、current()メソッドでアクセスできる要素、すなわちヒープの現在の最小値は変化しません。これは、最小ヒープの性質上、常に最も小さい要素がヒープの「トップ」に位置しているためです。したがって、next()を呼び出しても、現在の最小要素がヒープから削除されたり、current()が返す値が変わったりすることはありません。

このメソッドは、ヒープから実際に要素を取り除くものではありません。ヒープのトップにある最小要素を削除し、同時に次の最小要素をトップに昇格させたい場合は、extract()メソッドを使用する必要があります。next()メソッドは、SplMinHeapをイテレータとして利用する際に、内部的な状態を進める役割を持ちますが、その振る舞いは一般的なコレクションのイテレータとは異なる点に注意が必要です。foreach文などでSplMinHeapを反復処理する際には、このnext()メソッドが自動的に呼び出されます。

構文(syntax)

1<?php
2$heap = new SplMinHeap();
3
4// ヒープに要素を追加します。
5$heap->insert(10);
6$heap->insert(5);
7$heap->insert(20);
8
9// イテレータのポインタを最初の要素にリセットします。(この場合、最小要素の5)
10$heap->rewind();
11
12// イテレータのポインタを次の要素に進めます。(この場合、次に小さい要素の10)
13$heap->next();
14?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ