最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

class template
<iterator>

# std::back_insert_iterator

    namespace std {
      template <class Container>
      class back_insert_iterator
        : public iterator<output_iterator_tag, void, void, void, void>;

    }

## 概要

`back_insert_iterator`は出力イテレータであり、代入の際にコンテナの`push_back()`メンバ関数を呼び出すイテレータアダプタである。

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ |
`~back_insert_iterator() = default` | デストラクタ |
`operator=` | 代入演算子 |
`operator*` | 間接参照演算子 |
`operator++` | イテレータをインクリメントする |

## protectedメンバ変数

変数名 | 型 | 対応バージョン
--- | --- | ---
`container` | `Container*` |

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`container_type` | `Container` |
`difference_type` | `void` |
`difference_type` | `ptrdiff_t` | C++20
`pointer` | `void` |
`value_type` | `void` |
`iterator_category` | `output_iterator_tag` |
`reference` | `void` |

## 非メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`back_inserter` | `back_insert_iterator`のヘルパ関数 |

## 例

    #include <iostream>
    #include <vector>
    #include <iterator>
    #include <algorithm>

    int main()
    {
      std::vector<int> src = {1, 2, 3};
      std::vector<int> dest;

      // srcの要素をdestに追加しながらコピー
      dest.reserve(src.size());
      std::copy(src.begin(), src.end(), std::back_inserter(dest));

      for (int x : dest) {
        std::cout << x << std::endl;
      }
    }

### 出力

    1
    2
    3

## 参照

- P0896R4 The One Ranges Proposal (was Merging the Ranges TS)