---
name: "std::back_insert_iterator"
section: "3"
platform: "linux"
package: "gcc"
version: "16.2.1+r23+gd564253eb6c8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/std::back_insert_iterator"
---

# std::back\_insert\_iterator(3)

Turns assignment into insertion.

## NAME

std::back\_insert\_iterator\< \_Container \> - Turns assignment into insertion.

## SYNOPSIS

\#include \<iterator\>

Inherits **std::iterator\< output\_iterator\_tag, void, void, void, void \>**.

### Public Types

typedef \_Container **container\_type**\
 A nested typedef for the type of whatever container you used.  using **difference\_type**\
 typedef **output\_iterator\_tag** **iterator\_category**\
 One of the **tag types**.  typedef void **pointer**\
 This type represents a pointer-to-value\_type.  typedef void **reference**\
 This type represents a reference-to-value\_type.  typedef void **value\_type**\
 The type *pointed*to"*by*the*iterator.*

### Public Member Functions

constexpr **back\_insert\_iterator** (\_Container &\_\_x)\
 The only way to create this iterator is with a container.  constexpr **back\_insert\_iterator** & **operator\*** ()\
 Simply returns \*this.  constexpr **back\_insert\_iterator** & **operator++** ()\
 Simply returns \*this. (This iterator does not *move*.).  constexpr **back\_insert\_iterator** **operator++** (int)\
 Simply returns \*this. (This iterator does not *move*.).  constexpr **back\_insert\_iterator** & **operator=** (const typename \_Container::value\_type &\_\_value)\
 constexpr **back\_insert\_iterator** & **operator=** (typename \_Container::value\_type &&\_\_value)\

### Protected Attributes

\_Container \* **container**\

## Detailed Description

### template\<typename \_Container\>

class std::back\_insert\_iterator\< \_Container \>"Turns assignment into insertion.

These are output iterators, constructed from a container-of-T. Assigning a T to the iterator appends it to the container using push\_back.

Tip: Using the back\_inserter function to create these iterators can save typing.

## Member Typedef Documentation

### template\<typename \_Container\> typedef \_Container std::back\_insert\_iterator\< \_Container \>::container\_type

A nested typedef for the type of whatever container you used.

### typedef output\_iterator\_tag std::iterator\< output\_iterator\_tag, void, void, void, void \>::iterator\_category \[inherited\]

One of the **tag types**.

### typedef void std::iterator\< output\_iterator\_tag, void, void, void, void \>::pointer \[inherited\]

This type represents a pointer-to-value\_type.

### typedef void std::iterator\< output\_iterator\_tag, void, void, void, void \>::reference \[inherited\]

This type represents a reference-to-value\_type.

### typedef void std::iterator\< output\_iterator\_tag, void, void, void, void \>::value\_type \[inherited\]

The type "pointed to" by the iterator.

## Constructor & Destructor Documentation

### template\<typename \_Container\> std::back\_insert\_iterator\< \_Container \>::back\_insert\_iterator (\_Container & \_\_x) \[inline\], \[explicit\], \[constexpr\]

The only way to create this iterator is with a container.

References **std::\_\_addressof()**.

## Member Function Documentation

### template\<typename \_Container\> back\_insert\_iterator & std::back\_insert\_iterator\< \_Container \>::operator\* () \[inline\], \[nodiscard\], \[constexpr\]

Simply returns \*this.

### template\<typename \_Container\> back\_insert\_iterator & std::back\_insert\_iterator\< \_Container \>::operator++ () \[inline\], \[constexpr\]

Simply returns \*this. (This iterator does not *move*.).

### template\<typename \_Container\> back\_insert\_iterator std::back\_insert\_iterator\< \_Container \>::operator++ (int ) \[inline\], \[constexpr\]

Simply returns \*this. (This iterator does not *move*.).

### template\<typename \_Container\> back\_insert\_iterator & std::back\_insert\_iterator\< \_Container \>::operator= (const typename \_Container::value\_type & \_\_value) \[inline\], \[constexpr\]

**Parameters**

*\_\_value* An instance of whatever type container\_type::const\_reference is; presumably a reference-to-const T for container\<T\>.

**Returns**

This iterator, for chained operations.

This kind of iterator doesn't really have a *position* in the container (you can think of the position as being permanently at the end, if you like). Assigning a value to the iterator will always append the value to the end of the container.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
