Namespaces
Variants

cpp/iterator/back insert iterator: Difference between revisions

From cppreference.com
m link concept, shorten a line
Space Mission (talk | contribs)
m fmt.
 
(19 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{cpp/title|back_insert_iterator}}
{{cpp/title|back_insert_iterator}}
{{cpp/iterator/back_insert_iterator/navbar}}
{{cpp/iterator/back_insert_iterator/navbar}}
{{ddcl list begin}}
{{begin}}
{{ddcl list header | iterator}}
{{header|iterator}}
{{ddcl list item | 1=
{{
|1=
template< class Container >
template< class Container >
class back_insert_iterator : public std::iterator< std::output_iterator_tag,
class back_insert_iterator
                                                  void,void,void,void >
: public std::iterator<std::output_iterator_tag, void, void, void, void>
}}
}}
{{ddcl list end}}
{{
end}}


{{tt|std::back_insert_iterator}} is an {{concept|OutputIterator}} that appends to a container for which it was constructed, using the container's {{tt|push_back()}} member function whenever the iterator (whether dereferenced or not) is assigned to. Incrementing the {{tt|std::back_insert_iterator}} is a no-op.
{{tt|std::back_insert_iterator}} is {{|OutputIterator}} that appends to a container for which it was constructedcontainer's {{tt|push_back()}} member function whenever the iterator (whether dereferenced or not) is assigned to. Incrementing the {{tt|std::back_insert_iterator}} is a no-op.


===Member types===
{{||
{{dcl list begin}}
{{|{{tt|container_type}}|{{tt|Container}}}}
{{dcl list hitem | Member type | Definition}}
}}
{{dcl list item | {{tt|container_type}} | {{tt|Container}}}}
{{dcl list end}}


===Member functions===
===Member functions===
{{dcl list begin}}
{{begin}}
{{dcl list template | cpp/iterator/inserter/dcl list constructor | back_insert_iterator}}
{{|cpp/iterator/inserter/constructor|back_insert_iterator}}
{{dcl list template | cpp/iterator/inserter/dcl list operator{{=}} | back_insert_iterator}}
{{|cpp/iterator/inserter/operator{{=}}|back_insert_iterator}}
{{dcl list template | cpp/iterator/inserter/dcl list operator* | back_insert_iterator}}
{{|cpp/iterator/inserter/operator*|back_insert_iterator}}
{{dcl list template | cpp/iterator/inserter/dcl list operator++ | back_insert_iterator}}
{{|cpp/iterator/inserter/|back_insert_iterator}}
{{dcl list end}}
{{end}}


===Member objects===
===Member objects===
{{dcl list begin}}
{{begin}}
{{dcl list hitem | Member name | Definition}}
{{hitem|Member name|Definition}}
{{dcl list item | {{tt|container}} {{mark|protected}} | a pointer of type {{tt|Container*}} }}
{{|{{tt|container}} {{mark|protected}}|a pointer of type {{tt|Container*}}}}
{{dcl list end}}
{{end}}
 
{{cpp/iterator/iterator/inherit|std::output_iterator_tag|void|void|void|void}}


===Example===
===Example===
{{example
{{example
|
|code=
| code=
#include <iostream>
#include <iostream>
#include <iterator>
#include <iterator>
#include <algorithm>
#include <>
#include <cstdlib>
 
int main()
int main()
{
{
     std::vector<int> v;
     std::vector<int> v;
     std::generate_n(std::back_insert_iterator<std::vector<int>>(v), // can be simplified
 
                    10, [](){return std::rand()%10;});       // with std::back_inserter
     std::generate_n(
     for(int n : v)
std::back_insert_iterator<std::vector<int>>(v),
//
10,
[]() { return ; }
);
 
     for (int n : v)
         std::cout << n << ' ';
         std::cout << n << ' ';
     std::cout << '\n';
     std::cout << '\n';
}
}
| output=
|output=
3 6 7 5 3 5 6 2 9 1
3 6 7 9
}}
}}


===See also===
===See also===
{{dcl list begin}}
{{begin}}
{{dcl list template | cpp/iterator/dcl list back_inserter}}
{{|cpp/iterator/back_inserter}}
{{dcl list template | cpp/iterator/dcl list front_insert_iterator}}
{{|cpp/iterator/front_insert_iterator}}
{{dcl list template | cpp/iterator/dcl list insert_iterator}}
{{|cpp/iterator/insert_iterator}}
{{dcl list end}}
{{end
 
}}

Latest revision as of 16:26, 18 September 2023

 
 
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
Defined in header <iterator>
template< class Container >
class back_insert_iterator
    : public std::iterator<std::output_iterator_tag, void, void, void, void>
(until C++17)
template< class Container >
class back_insert_iterator;
(since C++17)

std::back_insert_iterator is a LegacyOutputIterator that appends elements to a container for which it was constructed. The container's push_back() member function is called whenever the iterator (whether dereferenced or not) is assigned to. Incrementing the std::back_insert_iterator is a no-op.

Member types

Member type Definition
iterator_category std::output_iterator_tag
value_type void
difference_type

void

(until C++20)

std::ptrdiff_t

(since C++20)
pointer void
reference void
container_type Container

Member types iterator_category, value_type, difference_type, pointer and reference are required to be obtained by inheriting from std::iterator<std::output_iterator_tag, void, void, void, void>.

(until C++17)

Member functions

constructs a new back_insert_iterator
(public member function) [edit]
inserts an object into the associated container
(public member function) [edit]