Namespaces
Variants

std:: forward_list

From cppreference.net
ヘッダーで定義 <forward_list>
template <

class T,
class Allocator = std:: allocator < T >

> class forward_list ;
(1) (C++11以降)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (C++17以降)

std::forward_list は、コンテナ内の任意の位置からの要素の高速な挿入と削除をサポートするコンテナです。高速なランダムアクセスはサポートされていません。単方向リンクリストとして実装されています。 std::list と比較して、双方向イテレーションが必要ない場合、このコンテナはより空間効率の高いストレージを提供します。

リスト内、または複数のリスト間での要素の追加、削除、移動は、現在リスト内の他の要素を指しているイテレータを無効化しません。ただし、対応する要素がリストから削除されると( erase_after 経由で)、その要素を参照するイテレータまたは参照は無効化されます。

std::forward_list は、 Container の要件( size メンバ関数および operator== の計算量が常に線形であることを除く)、 AllocatorAwareContainer および SequenceContainer の要件を満たします。

std::forward_listのすべてのメンバー関数は std::forward_list です:定数式の評価において std::forward_list オブジェクトを作成および使用することが可能です。

ただし、 std::forward_list オブジェクトは一般的に constexpr にはできません。なぜなら、動的に確保されたストレージは同じ定数式の評価内で解放されなければならないためです。

(C++26以降)

目次

テンプレートパラメータ

T - 要素の型。
要素に課せられる要件は、コンテナで実際に実行される操作に依存する。一般的には、要素型が完全型であり、 Erasable の要件を満たすことが要求されるが、多くのメンバ関数はより厳格な要件を課す。 (C++17まで)

要素に課せられる要件は、コンテナで実際に実行される操作に依存する。一般的には、要素型が Erasable の要件を満たすことが要求されるが、多くのメンバ関数はより厳格な要件を課す。アロケータが アロケータ完全性要件 を満たす場合、このコンテナ(そのメンバではない)は不完全な要素型でインスタンス化できる。

機能テスト マクロ 標準 機能
__cpp_lib_incomplete_container_elements 201505L (C++17) 最小限の不完全型サポート
(C++17以降)

Allocator - メモリの取得/解放およびそのメモリ内の要素の構築/破棄に使用されるアロケータ。この型は Allocator の要件を満たさなければならない。 動作は未定義 (C++20まで) プログラムは不適格 (C++20以降) である( Allocator::value_type T と同じでない場合)。

メンバー型

メンバ型 定義
value_type T
allocator_type Allocator
size_type 符号なし整数型(通常は std::size_t
difference_type 符号付き整数型(通常は std::ptrdiff_t
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator かつ ConstexprIterator (C++26以降) value_type を指す
const_iterator LegacyForwardIterator かつ ConstexprIterator (C++26以降) const value_type を指す

メンバー関数

forward_list を構築する
(公開メンバ関数)
forward_list を破棄する
(公開メンバ関数)
コンテナに値を代入する
(公開メンバ関数)
コンテナに値を割り当てる
(公開メンバ関数)
コンテナに値の範囲を割り当てる
(公開メンバ関数)
関連付けられたアロケータを返す
(公開メンバ関数)
要素アクセス
最初の要素にアクセスする
(public member function)
イテレータ
先頭要素の前を指すイテレータを返す
(public member function)
先頭を指すイテレータを返す
(公開メンバ関数)
終端へのイテレータを返す
(公開メンバ関数)
容量
コンテナが空かどうかをチェックする
(public member function)
格納可能な最大要素数を返す
(公開メンバ関数)
修飾子
内容をクリアする
(公開メンバ関数)
要素の後に要素を挿入する
(公開メンバ関数)
要素の直後に要素をその場で構築する
(公開メンバ関数)
要素の後に要素の範囲を挿入する
(public member function)
要素の後ろの要素を削除する
(公開メンバ関数)
先頭に要素を挿入する
(公開メンバ関数)
要素を先頭にその場で構築する
(公開メンバ関数)
要素の範囲を先頭に追加する
(公開メンバ関数)
先頭要素を削除する
(公開メンバ関数)
格納されている要素の数を変更する
(公開メンバ関数)
内容を交換する
(公開メンバ関数)
演算
二つのソート済みリストをマージする
(公開メンバ関数)
別の forward_list から要素を転送する
(公開メンバ関数)
特定の条件を満たす要素を削除する
(公開メンバ関数)
要素の順序を反転する
(公開メンバ関数)
連続する重複要素を削除する
(公開メンバー関数)
要素をソートする
(公開メンバ関数)

非メンバー関数

(C++11) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++11) (C++20で削除) (C++20)
2つの forward_list の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)
特定の条件を満たすすべての要素を削除する
(関数テンプレート)

推論ガイド

(C++17以降)

注記

機能テスト マクロ 標準 機能
__cpp_lib_containers_ranges 202202L (C++23) コンテナのためのレンジ構築と挿入
__cpp_lib_constexpr_forward_list 202502L (C++26) constexpr std::forward_list

関連項目

双方向リンクリスト
(クラステンプレート)