8

forward_list は単一のリンクされたリストです (標準のリスト コンテナーとは異なります)。list には前後に挿入する機能がありますが、 forward_list には要素を後ろに挿入する機能がありません (push_back のようなもの)。リストの後ろに要素を挿入できないのはなぜですか?

4

1 に答える 1

10

forward_listこれは、単一リンクのリストと比較してオーバーヘッドが発生しないようにするための意図的な設計上の決定です。これは、C++11 標準 (23.3.4.1) に記載されています。

注:forward_list手書きの C スタイルの単一リンク リストに比べて、スペースや時間のオーバーヘッドがゼロになるように意図されています。その目的に反する機能は省略されています。

リストの末尾へのポインターを保持すると、スペースのオーバーヘッド (ポインター自体) と時間のオーバーヘッド (リストの末尾で要素が挿入または消去されたときにポインターを更新する) の両方が追加されます。

于 2013-04-02T14:17:49.227 に答える