std:: inserter
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              
  | 
             
              
  | 
            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
           
           Défini dans l'en-tête
            
         
            
             <iterator>
            
           
           | 
         ||
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            Container
            
             >
            
             
         
             
              
               std::
               
                insert_iterator
               
              
             
             
              <
             
             Container
             
              >
             
               | 
         (jusqu'à C++20) | |
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            Container
            
             >
            
             
         
             
              constexpr
             
             
              
               std::
               
                insert_iterator
               
              
             
             
              <
             
             Container
             
              >
             
               | 
         (depuis C++20) | |
       
        inserter
       
       est une fonction template utilitaire qui construit un
       
        
         std::insert_iterator
        
       
       pour le conteneur
       
        
         c
        
       
       et son itérateur
       
        
         i
        
       
       avec le type déduit du type de l'argument.
      
         Table des matières | 
       
Paramètres
| c | - | 
         conteneur qui prend en charge une opération
         
          insert
         
         | 
       
| i | - | itérateur dans c indiquant la position d'insertion | 
Valeur de retour
Un std::insert_iterator qui peut être utilisé pour insérer des éléments dans le conteneur c à la position indiquée par i .
Implémentation possible
         template<class Container> std::insert_iterator<Container> inserter(Container& c, typename Container::iterator i) { return std::insert_iterator<Container>(c, i); }  | 
       
Exemple
#include <algorithm> #include <iostream> #include <iterator> #include <set> #include <vector> int main() { std::multiset<int> s{1, 2, 3}; // std::inserter est couramment utilisé avec les multi-ensembles std::fill_n(std::inserter(s, s.end()), 5, 2); for (int n : s) std::cout << n << ' '; std::cout << '\n'; std::vector<int> d{100, 200, 300}; std::vector<int> v{1, 2, 3, 4, 5}; // lors de l'insertion dans un conteneur séquentiel, le point d'insertion avance // car chaque appel à std::insert_iterator::operator= met à jour l'itérateur cible std::copy(d.begin(), d.end(), std::inserter(v, std::next(v.begin()))); for (int n : v) std::cout << n << ' '; std::cout << '\n'; }
Sortie :
1 2 2 2 2 2 2 3 1 100 200 300 2 3 4 5
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé | 
|---|---|---|---|
| LWG 561 | C++98 | 
         le type de
         
          
           i
          
         
         était indépendant de
         
          Container
         
         | 
        
         c'est le type d'itérateur de
         
          Container
         
         | 
       
Voir aussi
| 
         adaptateur d'itérateur pour l'insertion dans un conteneur
          (modèle de classe)  | 
       |
| 
         crée un
         
          
           std::back_insert_iterator
          
         
         dont le type est déduit de l'argument
          (modèle de fonction)  | 
       |
| 
         crée un
         
          
           std::front_insert_iterator
          
         
         dont le type est déduit de l'argument
          (modèle de fonction)  |