Namespaces
Variants

std::front_insert_iterator

ja.cppreference.net より
 
 
イテレータライブラリ
イテレータコンセプト
イテレータプリミティブ
アルゴリズムコンセプトとユーティリティ
間接呼び出し可能コンセプト
共通アルゴリズム要件
(C++20)
(C++20)
(C++20)
ユーティリティ
(C++20)
イテレータアダプタ
レンジアクセス
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
ヘッダで定義 <iterator>
template< class Container >
class front_insert_iterator
    : public std::iterator<std::output_iterator_tag, void, void, void, void>
(C++17まで)
template< class Container >
class front_insert_iterator;
(C++17以降)

std::front_insert_iterator は、構築時に指定されたコンテナの先頭に要素を追加するLegacyOutputIteratorです。イテレータ(逆参照されるかどうかにかかわらず)に代入されるたびに、コンテナの push_front() メンバ関数が呼び出されます。std::front_insert_iteratorをインクリメントしても何も行われません。

メンバー型

メンバー型 定義
iterator_category std:: output_iterator_tag
value_type void
difference_type

void

(C++20まで)

std::ptrdiff_t

(C++20以降)
pointer void
reference void
container_type Container

メンバ型 iterator_category , value_type , difference_type , pointer および reference は、 std:: iterator < std:: output_iterator_tag , void , void , void , void > からの継承によって取得されることが要求される。

(C++17まで)

メンバー関数

新しい front_insert_iterator を構築する
(public member function)
オブジェクトを関連付けられたコンテナに挿入する
(public member function)
何も行わない操作
(public member function)
何も行わない操作
(public member function)

メンバーオブジェクト

メンバー名 定義
container (protected) Container * 型のポインタ

例

#include <algorithm>
#include <deque>
#include <iostream>
#include <iterator>
#include <vector>
namespace stb
{
    void println(auto, auto const& d)
    {
        std::ranges::copy(d, std::ostream_iterator<int>(std::cout, " "));
        std::cout << '\n';
    }
}
int main()
{
    std::vector<int> v{1, 2, 3, 4, 5};
    std::deque<int> d;
    std::copy(v.begin(), v.end(),
              std::front_insert_iterator<std::deque<int>>(d));
              // or std::front_inserter(d)
    stb::println("{}", d);
}

出力:

5 4 3 2 1

関連項目

引数から推測される型の std::front_insert_iterator を作成する
(関数テンプレート)
コンテナの末尾への挿入のためのイテレータアダプタ
(クラステンプレート)
コンテナへの挿入のためのイテレータアダプタ
(クラステンプレート)