Table des matières
1. Opérations de séquence non modificatrices (12)
2. Modifier l'opération de séquence (27)
3. Tri des séquences et opérations associées (27)
avant-propos
#include <algorithm> est l'un des fichiers d'en-tête les plus importants de la bibliothèque de modèles standard C++ (STL), fournissant un grand nombre de fonctions de modèle non membres basées sur des itérateurs.
Inclure spécifiquement : les opérations de séquence non modifiées, les opérations de séquence modifiées, les opérations de partition, les opérations de tri, les opérations de recherche binaire, les opérations de fusion, les opérations de tas, les opérations de valeur maximale et minimale et d'autres opérations
Cet article enregistre en détail comment utiliser les fonctions de la bibliothèque et les explications des fonctions couramment utilisées
1. Opérations de séquence non modificatrices ( 12 )
1.for_each()
effectuer une opération sur chaque élément d'une séquence
for_each(v1.begin(),v1.end(),add);//将v1执行add方法
2.trouver()
Recherche la première occurrence d'une valeur dans une séquence. Compare les éléments de la plage à la valeur d'entrée à l'aide de l'opérateur d'égalité sur l'élément sous-jacent. En cas de correspondance, terminez la recherche et renvoyez un InputIterator pour l'élément
find(v1.begin(),v1.end(),value);//在v1中找到value的索引值
3.find_if()
Trouver le premier élément d'une séquence qui satisfait un prédicat
4.trouver_fin()
Trouver la position de la dernière occurrence d'une sous-séquence dans une séquence
5.find_first_of()
trouve la première occurrence d'une valeur dans un ensemble spécifié de valeurs dans une séquence
6.adjacent_find()
Trouver des paires de valeurs adjacentes dans une séquence
7.count()
Compter le nombre d'occurrences d'une valeur dans une séquence
count(v1.begin(),v1.end(),value);//统计v1中value出现的次数
8.count_if()
compte le nombre de correspondances pour un prédicat dans une séquence
9.incompatibilité()
Comparer : trouver le premier élément de deux séquences qui diffère
10.égal()
Vrai si les éléments correspondants dans les deux séquences sont identiques
11.recherche()
Trouver la position de la première occurrence d'une sous-séquence dans une séquence
12.recherche_n()
Trouver n occurrences consécutives d'une valeur dans une séquence
2. Modifier les opérations de séquence ( 27 )
1.copie()
copier à partir du premier élément de la séquence
copy (v1.begin(),v1.end(),v2.begin());//v1复制给v2
2.copy_backward()
copier à partir du dernier élément de la séquence
3.échange()
échanger deux éléments
swap(a,b);//交换ab
4.swap_ranges()
permute la plage d'éléments spécifiée
5.iter_swap()
échange les deux éléments pointés par l'itérateur
6. transformer ()
applique une opération à chaque élément dans la plage spécifiée
transform(v1.begin(),v1.end(),v2.begin(),add);//将v1复制到v2同时先执行add方法 将其改变后放入v2容器中
7.replace()
remplacer certaines valeurs par une valeur donnée
replace(v1.begin(),v1.end(),old_value,new_value);//在v1中找old_value,并用new_value替换
8.replace_if()
remplacer certains éléments qui satisfont le prédicat
9.replace_copy()
remplace les éléments par une valeur donnée lors de la copie d'une séquence
10.replace_copy_if()
Remplacer les éléments satisfaisant le prédicat lors de la copie de la séquence
11.fill()
remplace tous les éléments par une valeur donnée
fill(v1.begin(),v1.end(),value);//遍历v1,value替换所遍历的值
12.fill_n()
Remplace les n premiers éléments par une valeur donnée
13.générer()
remplace tous les éléments par le résultat d'une opération
14.generate_n()
Remplace les n premiers éléments par le résultat d'une opération
15.supprimer()
supprime les éléments avec une valeur donnée
remove(v1.begin(),v1.end(),value);//删除v1中所有值为value的数据
16.remove_if()
supprimer les éléments qui satisfont le prédicat
17.remove_copy()
supprime les éléments avec la valeur donnée lors de la copie de la séquence
18.remove_copy_if()
Supprimer les éléments qui satisfont un prédicat lors de la copie d'une séquence
19.unique()
supprimer les éléments en double adjacents
vector<int> ModuleArr;
sort(ModuleArr.begin(), ModuleArr.end());//排序
ModuleArr.erase(unique(ModuleArr.begin(), ModuleArr.end()), ModuleArr.end());//去重
20.copie_unique()
Supprimer les éléments en double adjacents lors de la copie d'une séquence
21.inverse()
inverser l'ordre des éléments
reserve(v1.begin(),v1.end());//反转v1次序
22.reverse_copy()
Inverse l'ordre des éléments lors de la copie d'une séquence
23.rotation()
Faire défiler les éléments
24.rotate_copy()
Faire défiler les éléments lors de la copie d'une séquence
25.random_shuffle()
Aléatoire : utilise une distribution uniforme pour déplacer les éléments de manière aléatoire
26.partition()
Partition : placez tous les éléments qui satisfont un prédicat devant
27.stable_partition()
Mettre les éléments qui satisfont un prédicat devant et maintenir l'ordre d'origine
3. Tri des séquences et opérations associées ( 27 )
1.sort()
Trier avec une bonne efficacité moyenne
sort(v1.begin(), v1.end());//v1排序
2.stable_sort()
Trier : et conserver l'ordre d'origine des mêmes éléments
3.partial_sort()
trier la partie précédente de la séquence
4.partial_sort_copy()
Trier la partie précédente de la séquence lors de la copie
5.nth_element()
nième élément Mettez chaque nième élément dans sa position correcte
6.lower_bound()
Trouver la première occurrence d'une valeur supérieure ou égale à une valeur
7.limite_supérieure()
Trouver la première occurrence supérieure à une certaine valeur
8.equal_range()
trouve (sans casser l'ordre) la plus grande plage dans laquelle une valeur donnée peut être insérée
9.binary_search()
Détermine si un élément donné existe dans une séquence ordonnée
10.merge()
fusionner deux séquences triées
merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());//合并v1和v2到v3
11.inplace_merge()
fusionner deux séquences triées consécutives
12.inclut()
Définir les opérations sur les structures ordonnées : vrai si une séquence est une sous-séquence d'une autre
13.set_union()
Construit l'union ordonnée de deux ensembles
14.set_intersection()
Construit l'intersection ordonnée de deux ensembles
15.set_difference()
Construit la différence ordonnée de deux ensembles
16.set_symmetric_difference()
Construit la différence symétrique ordonnée (union-intersection) de deux ensembles
17.push_heap()
ajouter des éléments au tas
18.pop_heap()
Extraire un élément du tas
19.make_heap()
Construit un tas à partir d'une séquence
20.sort_heap()
Trier le tas
21.min()
la plus petite des deux valeurs
min(a,b);
22.max()
la plus grande des deux valeurs
max(a,b);
23.min_element()
le plus petit élément de la séquence
max_element(first,end,cmp);//第三个参数cmp可写可不写,max_element()和min_element() 默认是从小到大排列
24.max_element()
le plus grand élément de la séquence
min_element(first,end,cmp)
25.comparaison_lexicographique()
Deux séquences sont lexicographiquement premier-premier
26.prochaine_permutation()
suivant dans l'ordre lexicographique
27.prev_permutation()
précédant lexicographiquement
Résumer
Cet article résume les méthodes de fonction de modèle dans la bibliothèque d'algorithmes et présente en détail l'utilisation des méthodes de fonction couramment utilisées.