変更不可能なリンク リストを作成したいとします (つまり、トラバースのみ可能で、最初に作成されたノードは追加または削除できません)。これは、次の方法で簡単に実装できます。
struct ListNode
{
int value;
ListNode* nextNode;
}
私の質問は....ポインターの代わりに参照を使用することは可能でしょうか?
struct ListNodeWithRefs
{
int value;
ListNodeWithRefs &nextNode;
}
パフォーマンスがまったく向上するかどうかはわかりませんが...コーディング中にこの質問がポップアップし、これまでの私の答えは「いいえ」ですが、何かが欠けている可能性があります。
原則として、参照を使用したり、次のようなリスト要素を作成したりすることを妨げるものは何もありません。
ListNodeWithRefs::ListNodeWithRefs(ListNodeWithRefs &next):
nextNode(next)
{}
しかし、作成時にその要素が存在することnext
を強制するなど、鶏が先か卵が先かという問題があります...next
注:私の質問は、リストを次のように定義することにも適用できると思います。
struct ListNodeConst
{
int value;
const ListNode* nextNode;
}