Recherche…


Introduction

std::forward_list est un conteneur qui prend en charge l'insertion et le retrait rapides d'éléments de n'importe où dans le conteneur. L'accès aléatoire rapide n'est pas pris en charge. Il est implémenté en tant que liste à lien unique et n'a pratiquement pas de surcharge par rapport à son implémentation en C. Comparé à std::list ce conteneur offre un stockage plus efficace lorsque l'itération bidirectionnelle n'est pas nécessaire.

Remarques

L'ajout, la suppression et le déplacement des éléments dans la liste, ou sur plusieurs listes, n'invalident pas les itérateurs faisant actuellement référence à d'autres éléments de la liste. Cependant, un itérateur ou une référence faisant référence à un élément est invalidé lorsque l'élément correspondant est supprimé (via erase_after) de la liste. std :: forward_list répond aux exigences de Container (sauf pour la fonction membre taille et la complexité de cet opérateur == est toujours linéaire), AllocatorAwareContainer et SequenceContainer.

Exemple

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

Sortie:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

Les méthodes

Nom de la méthode Définition
operator= assigne des valeurs au conteneur
assign assigne des valeurs au conteneur
get_allocator renvoie l'allocateur associé
------ ------
Accès aux éléments
front accéder au premier élément
------ ------
Les itérateurs
before_begi n renvoie un itérateur à l'élément avant de commencer
cbefore_begin renvoie un itérateur constant à l'élément avant de commencer
begin renvoie un itérateur au début
cbegin retourne un itérateur const au début
end renvoie un itérateur à la fin
cend renvoie un itérateur à la fin
Capacité
empty vérifie si le conteneur est vide
max_size renvoie le nombre maximum possible d'éléments
Modificateurs
clear efface le contenu
insert_after insère des éléments après un élément
emplace_after construit des éléments sur place après un élément
erase_after efface un élément après un élément
push_front insère un élément au début
emplace_front construit un élément sur place au début
pop_front supprime le premier élément
resize change le nombre d'éléments stockés
swap échange le contenu
Les opérations
merge fusionne deux listes triées
splice_after déplace des éléments d'une autre forward_list
remove supprime les éléments satisfaisant des critères spécifiques
remove_if supprime les éléments satisfaisant des critères spécifiques
reverse inverse l'ordre des éléments
unique supprime les éléments en double consécutifs
sort trie les éléments


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow