La route vers l'apprentissage du C ++ - (Chapitre 16 Conteneur de séquence de modèle STL)

Conteneurs et structures multiples STL

1. Array (conteneur séquentiel)

Diagramme de structure:

La taille de la longueur est spécifiée et l'espace ne peut pas être agrandi dynamiquement

définition:

#include <array>
array<double,10>ary = {1,2,3,4,5,6,7,8,9,10}; //必须有第二个参数,要指定有多大

fonction:

1. obtenir

Il s'agit d'une fonction globale et non détenue par le modèle de tableau

get (décalage d'élément, type d'élément, livre d'éléments dans le tableau, le tableau sélectionné à partir de celui-ci)

#include <array>
array<int,4>c0={1,2,3,4};
get<1>(c0);

 

2. commencer ()

Récupère l'itérateur de la première position du tableau

2. fin ()

Obtenez un itérateur vers la position suivante de la dernière position du tableau

3. taille ()

Obtenez la longueur du tableau

4. retour ()

Récupère la valeur du dernier élément du tableau

5. données ()

Obtenez la première adresse de localisation

6. devant ()

Récupère la valeur de la première position du tableau

2. vecteur (conteneur séquentiel)

Diagramme de structure:

Un vecteur est un conteneur qui se déplie vers l'arrière. Lorsque son espace est insuffisant, il augmente jusqu'à deux fois la taille d'origine, puis continue de doubler la taille d'origine lorsqu'elle est insuffisante ........

Leurs adresses sont également un

portail de résumé vectoriel: https://blog.csdn.net/z1455841095/article/details/82668794

3. Deque (conteneur séquentiel)

Un conteneur à ouverture bidirectionnelle pouvant entrer et sortir.

Diagramme de structure:

C'est juste ce que vous voyez à la surface, c'est comme ceci:

En fait, c'est plus spécifique comme ceci:

 Le premier conteneur de graphe stocke une adresse qui pointe vers une section d'espace tampon. Cela dépend de l'aspect du second graphe.

Lorsque les deux extrémités sont remplies, si vous continuez à push_back pour ajouter des éléments, le conteneur Deque ouvrira automatiquement une mémoire tampon pour le stockage et une adresse apparemment continue pointe vers elle.

Au contraire, si vous utilisez push_front, cela ouvrira également un tampon

4. Liste (conteneur séquentiel)

Liste doublement chaînée :

Organigramme

 

Exemple de code:

#include<iostream>
#include <cstdlib>
#include <ctime>
#include <list>
#include <string>
#include <cstring>
#include <exception>
#include <array>
std::string get_a_target_string();
int main()
{
	using namespace std;
	srand(time(0));
	long value;
	cout << "how many elements: ";
	cin >> value;
	cout << "\ntest_list()........... \n";
	list<string>c;
	char buf[10];
	clock_t timeStart = clock();
	for (long i = 0; i < value; ++i)
	{
		try 
		{
			snprintf(buf, 10, "%d", rand());
			c.push_back(string(buf));
		}
		catch(exception & p)
		{
			cout << "i = " << i << " " << p.what() << endl;
			abort();//返回
		}
	}
	cout << "milli-seconds: " << (clock() - timeStart) << endl;

	cout << "list.size(): " << c.size() << endl;
	cout << "list.max_size(): " <<c.max_size() << endl;

	cout << "list.front(): " << c.front() << endl;
	cout << "list.back(): " << c.back() << endl;
	string target = get_a_target_string();
	timeStart = clock();
	auto pItem = find(c.begin(), c.end(), target);
	cout << "::find(), milli-seconds : " << (clock() - timeStart) << endl;
	if (pItem != c.end())
	{
		cout << "found, " << *pItem;
		cout << endl;
	}
	else {
		cout << "Not Found! " << endl;
	}

	timeStart = clock();
	c.sort();
	cout << "c.sort() milli-seconds : " << (clock() - timeStart) << endl;

	system("pause");
	return 0;
}
std::string get_a_target_string()
{
	using std::cin;
	using std::cout;
	int value;
	cout << "target (0~" << RAND_MAX << ": ";
	cin >> value;
	char buf[10];
	snprintf(buf, 10, "%d", value);
	return std::string(buf);
}

La liste a un seul membre de tri.

Le conteneur de commande avec la plus grande utilisation de l'espace est le plus efficace mais le temps de tri est lent

5.Forward_list (conteneur séquentiel)

Liste liée individuellement

Diagramme de structure:

 Forward_list a un tri distinct couramment utilisé

6. pile (conteneur séquentiel)

Conteneur de pile (c'est un conteneur premier entré-dernier sorti)

Diagramme de structure:

 fonction:

1. pousser

Poussez les éléments dans le conteneur de pile

2. pop

Supprimer le dernier élément de la pile


7. file d'attente (conteneur de tas)

Il s'agit d'un conteneur premier entré, premier sorti

 fonction:

1. pousser

Poussez les éléments sur la pile (ajouté plus tard)

2. pop

Retirez toujours le premier élément de la pile

Je suppose que tu aimes

Origine blog.csdn.net/z1455841095/article/details/82696865
conseillé
Classement