C++
std :: forward_list
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 |