Partage de technologie

Série C-Vecteur (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌈个人主页:Camarade de classe Yuchen 

💫个人格言:“成为自己未来的主人~”   

Introduction et utilisation de Vector

Introduction au vecteur

Lorsque le type de paramètre construit par vector est de type char, il est très similaire à string, mais il existe également des différences entre les deux. Par exemple, pour vector,Il peut prendre en compte d'autres types différents, alors que la chaîne ne peut concerner que les chaînes, et après avoir appris les chaînes en détail, il nous deviendra plus facile d'apprendre d'autres choses STL.

  1. Vector est un conteneur de séquence qui représente un tableau de taille variable.
  2. Tout comme un tableau, Vector utilise également un espace de stockage continu pour stocker des éléments, ce qui signifie que les éléments de Vector sont accessibles à l'aide d'indices. Il est aussi efficace qu'un tableau, mais contrairement à un tableau, sa taille peut être modifiée de manière dynamique. sa taille sera automatiquement gérée par le conteneur.
  3. Essentiellement, Vector utilise un tableau alloué dynamiquement pour stocker ses éléments. Lorsqu'un nouvel élément est inséré, le numéro doit être réaffecté afin d'augmenter l'espace de stockage. L'approche consiste à allouer un nouveau tableau puis à déplacer tous les éléments vers ce tableau. En termes de temps, il s'agit d'une tâche relativement coûteuse, car chaque fois qu'un nouvel élément est ajouté au conteneur, Vector ne sera pas réaffecté. à chaque fois.
  4. Stratégie d'espace d'allocation de vecteur : Vector allouera de l'espace supplémentaire pour s'adapter à une éventuelle croissance, car l'espace de stockage est plus grand que l'espace de stockage réel requis. Différentes bibliothèques utilisent des stratégies différentes pour évaluer l'utilisation et la réallocation de l'espace, mais dans tous les cas, les allocations de réallocation doivent toujours être. de taille d'intervalle augmentant de manière logarithmique, de sorte que l'insertion d'un élément à la fin se fasse en temps constant.
  5. Par conséquent, Vector occupe un espace de stockage plus important afin de pouvoir gérer l'espace et de le développer de manière dynamique et efficace.
  6. Comparé à d'autres conteneurs de séquences dynamiques, Vector est plus efficace lors de l'accès aux éléments. L'ajout et la suppression d'éléments à la fin sont relativement efficaces, mais il est moins efficace pour d'autres opérations de suppression et d'insertion qui ne sont pas à la fin.

Utilisation du vecteur

fonction push_back

  1. void test_vector1()
  2. {
  3. vector<double> v2;
  4. vector<int> v1;
  5. v1.push_back(1);
  6. v1.push_back(2);
  7. v1.push_back(3);
  8. v1.push_back(4);
  9. for (size_t i = 0; i < v1.size(); i++)
  10. {
  11. cout << v1[i] << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector1();
  18. return 0;
  19. }

En fait, il n'y a rien à dire sur push_back. Il ajoutera des caractères après l'espace de stockage d'origine du Vector.

En fait, il y a une introduction détaillée dans le fichier. Lorsqu'il n'y a pas assez d'espace lors de l'insertion, la capacité sera automatiquement étendue.

En ce qui concerne les méthodes de parcours de la fonction Vector, nous parlerons également ici de diverses méthodes :

  1. for (size_t i = 0; i < v1.size(); i++)
  2. {
  3. cout << v1[i] << " ";
  4. }
  5. cout << endl;
  6. for (size_t i = 0; i < v1.size(); i++)
  7. {
  8. cout << v1[i] << " ";
  9. }
  10. cout << endl;
  11. vector<int>::iterator it1 = v1.begin();
  12. while (it1 != v1.end())
  13. {
  14. cout << *it1 << " ";
  15. it1++;
  16. }
  17. cout << endl;
  18. for (auto e : v1)
  19. {
  20. cout << e << " ";
  21. }
  22. cout << endl;

Y compris l'accès à l'indice [], l'itérateur et la plage pour, c'est fondamentalement la même chose que la chaîne dont nous avons parlé précédemment.

  1. void test_vector2()
  2. {
  3. vector<string> v2;
  4. string s1("张三");
  5. v2.push_back(s1);
  6. v2.push_back(string("李四"));
  7. v2.push_back("王五");
  8. v2[1] += "来";
  9. for (const auto& e : v2)
  10. {
  11. cout << e << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector2();
  18. return 0;
  19. }

 

Ce qui est encore plus étonnant avec Vector, c'est qu'il peut être réutilisé et appliquer d'autres éléments dans Vector, comme une liste, une chaîne ou même un autre vecteur.

Si une chaîne est appliquée, alors chaque élément de la table de séquence représente une chaîne.