Fonctions couramment utilisées en C ++ STL

  La STL de C ++ nous fournit de nombreuses opérations pratiques, qui peuvent être libérées de certaines opérations fastidieuses en langage C. Cet article résume brièvement les fonctions couramment utilisées dans STL et leurs fonctions couramment utilisées respectives. Le contenu comprend: pile, file d'attente, vecteur, chaîne, unordered_set, unordered_map, set, map.

empiler

1. Brève description: La fonction de pile est la pile, c'est-à-dire que la file d'attente est la dernière entrée, première sortie
. 2. Fichier d'en-tête: #include <pile>
3. Format de définition: pile <type de variable> Nom de la pile; // Pour exemple: stack <int> a;
4. Fonctions couramment utilisées:

push()  // 将变量压入栈顶
pop()  // 栈顶出栈,无返回值
top()  // 返回栈顶元素,不出栈
empty() // 判断栈是否为空,不空返回false,空返回true
size()  // 返回栈中元素的个数
swap(s,s1) // 交换两个栈(s,s1)中全部元素

file d'attente

1. Brève description: la fonction remplie par la file d'attente est la file d'attente, c'est-à-dire le premier entré, premier sorti
2. Fichier d'en-tête: #include <queue>
3. Format de définition: file <type de variable> nom de la file d'attente; // Par exemple: queue < int> a;
4 .Fonctions communes:

front() // 获取队首元素,但并不删除
back() // 获取队尾元素,但并不删除
pop() // 删除队首元素,无返回值
push() // 向队列中加入元素,放置队列末尾
empty() // 判断队列是否为空,不空返回false,空返回true
size() // 返回队列中元素的个数

vecteur

1. Brève description: vector est un conteneur, qui peut être compris comme un tableau / une liste chaînée en C ++. L'accès peut se faire via []
2. Fichier d'en-tête: #include <vecteur>
3. Format de définition: vecteur <type de variable> nom du tableau; / / Par exemple: vector <int> a;
4. Fonctions couramment utilisées:

push_back() // 尾部插入数组元素
pop_back() // 删除尾部数组元素
insert(a.begin()+i, num) // 将num插入第i+1个位置上,后面依次向后串位
erase(a.begin()+i) // 将第i+1个元素删除,后面依次向前串位
erase(a.begin()+i, a.begin()+j); // 删除区间[i, j-1]。区间从0开始
size() // 返回数组中元素个数
clear() // 清空数组元素,元素个数归为0
empty() // 判断数组是否为空,不空返回false,空返回true
resize() // 重新指定数组长度

begin()和end()怎么使用?
/*begin()和end()产生指向容器的第一个元素和最后一个元素的下一个位置的迭代器,常用于标记容器中元素的迭代范围。另外,容器还定义了rbegin()和rend(),返回指向容器最后一个元素和第一个元素的前一个位置的反向(reverse)迭代器。Begin()和end()与索引下标不同,所以不是int类型。*/
//输出指定的整型顺序容器的元素
Template<class T>
void printContainer(const char *msg, const T& s) {
    
    
	cout<<msg<<:;
	copy(s.begin(), s.end(), ostream_iterator<int>(cout, “ “))// ostream_iterator是用于输出的迭代器类,ostream_iterator<int>(cout, “ “) 绑定标准输出装置。“ ”代表每个字符以空格间隔
	cout<<endl;
}

chaîne de caractères

1. Brève description: string est une classe de modèle de chaîne, qui peut comprendre les tableaux de caractères. L'accès aux éléments peut être complété par [], l'attribution d'objet peut être utilisée =
2. Fichier d'en-tête: #include <string>
3. Format de définition: chaîne a;
4. Fonctions communes:

assign(s1, b, c) // 使用s1对象对a赋值,从b开始到c结束(0开始,左闭右闭)。缺省bc全部赋值
length()/size() // 返回字符串的长度
append(s1, b, c) //添加至字符串末尾,从b开始到c结束(0开始,左闭右闭)。缺省bc全部赋值
<<===!=>=> 对象间比较大小。
compare(b, c, s1,m,n) // 比较两string对象大小,bc是自己索引,mn是s1索引。均可缺省。返回值三种:大于0,等于0,小于0
swap(s2) // 本对象与s2对象交换内容
substr(m, n) // 取子串,从m索引开始,长度为n。n可缺省
replace(b,c,s1,m,n) //字符串替换,用s1的[m,n]替换原对象的[b,c]。c-b=n-m。
erase(b, c) // 删除子串[b,c],后面依次向前补。c可缺省,删除到底
insert(b, s1) // 在索引b处插入对象s1,原对象依次向后串
find(b, c) // 返回值是int型,返回出现指定字符的下标。b是内容,c是开始位置(可缺省)。常通过for循环使用,终止条件是:(position=s.find(b,c))!=string::npos

unordered_set

1. Brève description: unordered_set équivaut à un ensemble, et l'organisation de l'ensemble est désordonnée. Le numéro est unique, juste pour juger s'il existe.
2. Fichier d'en-tête: #include <unordered_set>
3. Format de définition: unordered_set <data type> nom de la variable; // Par exemple: unordered_set <int> a;
4. Fonctions courantes:

find() // 查找目标数值,找到返回迭代器。常使用的模板是s,find(a) != s.end()
count() // 返回指定值出现的次数,返回值为int型
empty() // 判断是否为空,不空返回false, 空返回true
size() // 返回数组大小
insert() // 插入元素,参数即插入的元素值
emplace() // 插入元素
erase() // 删除操作,两种方式:指定数值或者是迭代器。删除指定数值,返回值是0/1,代表是否删除成功。删除迭代器,返回值是下一个位置的迭代器。失败返回s.end()。

  Remarque: La fonction de Insert () est d'insérer un ou plusieurs éléments à la position spécifiée du conteneur vectoriel; Emplace () est une nouvelle fonction membre de C ++ 11, qui est utilisée pour insérer un nouvel élément avant la position spécifiée du conteneur de vecteur. Il n'y a pas de grande différence de fonction entre les deux. La différence réside dans le principe d'implémentation: le plus grand rôle d'Emplace () est d'éviter les variables temporaires inutiles, et de construire des éléments directement à la position spécifiée (en place), et il suffit d'appeler le constructeur de la classe sans appeler la copie constructeur. Sa réalisation repose principalement sur deux nouvelles fonctionnalités de C ++ 11: le modèle de paramètre variable et le transfert parfait. "Modèle de paramètre variable" permet à Emplace () d'accepter n'importe quel paramètre, et il peut être appliqué à la construction de n'importe quel objet. "Perfect Forwarding" permet de transmettre les paramètres reçus au constructeur de l'objet tels quels.
Pour un contenu plus détaillé, veuillez consulter: https://www.cnblogs.com/narjaja/p/10039509.html

unordered_map

1. Brève description: unordered_map est utilisé pour la disposition non ordonnée et unique des clés et des valeurs et est utilisé pour les problèmes avec des exigences bidimensionnelles. Il équivaut également à un tableau unidimensionnel, la valeur clé est l'index, la valeur est la valeur du tableau (vous pouvez utiliser [] lors de l'affectation de valeurs, et ne pas utiliser [] lors du parcours), ce qui peut être compris comme ayant plusieurs éléments non ordonnés identiques dans l'ensemble.
2. Fichier d'en-tête: #include <unordered_map>
3. Format de définition: unordered_map <data type 1, data type 2> Nom de la variable // Par exemple: unordered_map <int, int> a;
4. Fonctions courantes:

begin()/end() // 迭代器,不是int型
size() // 返回有效元素的个数
empty() // 返回数组是否为空,不空返回false,空返回true
insert() // 插入元素,成对儿插入。插入的方式有两种:{0,1},pair<int, int>(0,1)。后者更常用
erase() // 删除元素,删除有两种类型:迭代器删除或键值删除。键值删除,返回值是删除的个数。例如:num = s.erase(1)——删除键值为1的元素,并返回个数给num。迭代器删除,返回值是下一个位置的迭代器。例如:iter = s.erase(s.begin())。Iter指向第二个元素的迭代器
clear() // 清空所有元素
find() //查找给定主键的位置,返回的是迭代器。常用的判断语句时:s.find(0) != s,end()
count() //返回值为int型,返回目标主键的个数。没找到就是0了

carte

1. Brève description: la carte est utilisée pour la correspondance entre les valeurs clés et les valeurs numériques. Trier par valeur de clé (de petite à grande). Équivalent à un tableau unidimensionnel, la valeur de la clé est l'index, la valeur est la valeur du tableau (vous pouvez utiliser [] lors de l'affectation de valeurs, et ne pas utiliser [] lors du parcours), qui peut être compris comme plusieurs éléments ordonnés identiques dans la collection
2. Fichier d'en-tête: # include <map>
3. Format de définition: map <type de données 1, type de données 2> nom de la variable // Par exemple: map <int, int> a;
4. Fonctions courantes:

insert() // 插入元素,成对儿插入。插入的方式有两种:{0,1},pair<int, int>(0,1)。后者更常用
erase() // 删除元素,删除有两种类型:迭代器删除或键值删除。键值删除,返回值是删除的个数。例如:num = s.erase(1)——删除键值为1的元素,并返回个数给num。迭代器删除,返回值是下一个位置的迭代器。例如:iter = s.erase(s.begin())。Iter指向第二个元素的迭代器
find() //查找给定主键的位置,返回的是迭代器。常用的判断语句时:s.find(0) != s,end()
clear() // 清空所有元素
count() //返回值为int型,返回目标主键的个数。没找到就是0了
empty() // 返回数组是否为空,不空返回false,空返回true
size() // 返回有效元素的个数
iter->first/iter->second // iter代表迭代器,first访问键值,second访问数值

  Pour map / set, les itérateurs unorderedmap / unorderedset sont définis comme suit: container class name :: iterator name;
par exemple:
  unordered_set <int> :: iterator a;
  set <int> :: iterator a;
  unordered_map <int, string>: : itérateur a;
  map <int, chaîne> :: itérateur a;

Quelques algorithmes généraux couramment utilisés dans STL:

sort (a.begin (), a.end (), cmp)
fichier d'en-tête: #include <algorithm>
Description: La fonction est un tri, les deux premiers paramètres sont des itérateurs, qui spécifient la plage de tri. La troisième est la méthode de tri. Par défaut, elle arrivera dès le plus jeune âge par défaut. S'il est personnalisé, le type de valeur de retour est staic bool cmp (int a, int b) {}

reverse (a.begin (), a, end ())
Fichier d'en-tête: #include <algorithm>
Description: La fonction est inversée et les paramètres sont deux itérateurs. Spécifiez la plage de retournement

En raison du niveau limité de l'auteur de cet article, s'il y a une erreur, veuillez me corriger dans la section commentaire ci-dessous, merci!

Je suppose que tu aimes

Origine blog.csdn.net/gls_nuaa/article/details/114542691
conseillé
Classement