Maison  >  Article  >  développement back-end  >  Comment implémenter le redimensionnement dynamique des structures de données à l'aide de C++ STL ?

Comment implémenter le redimensionnement dynamique des structures de données à l'aide de C++ STL ?

王林
王林original
2024-06-04 18:05:00808parcourir

Oui, le redimensionnement dynamique des structures de données est possible à l'aide de conteneurs C++ STL. La taille des conteneurs peut automatiquement augmenter ou diminuer sans allocation manuelle de mémoire. Étapes spécifiques : utilisez std::vector pour créer un tableau dynamique. Utilisez std::deque pour créer un deque. Utilisez std::list pour créer une liste chaînée.

如何使用 C++ STL 实现数据结构的动态大小调整?

Comment utiliser C++ STL pour implémenter le redimensionnement dynamique des structures de données ?

La bibliothèque de modèles standard C++ (STL) fournit une série de conteneurs de structure de données puissants pour nous aider à stocker et gérer efficacement les données dans nos programmes. Une caractéristique clé de ces conteneurs est la possibilité d'ajuster dynamiquement leur taille pour s'adapter aux changements de volume de données sans avoir besoin de réallouer manuellement la mémoire.

Utilisez std::vector pour implémenter des tableaux dynamiques

std::vector 实现动态数组

std::vector 是一个动态数组容器,它将在需要时自动增加或减少其容量。

#include <vector>

std::vector<int> myVector;

// 添加元素
myVector.push_back(1);
myVector.push_back(2);

// 访问元素
std::cout << myVector[0] << std::endl; // 输出:1

// 动态调整大小
myVector.pop_back(); // 删除最后一个元素
myVector.resize(5, 0); // 调整大小为 5,并用 0 填充新元素

使用 std::deque 实现双端队列

std::deque 是一个双端队列容器,它允许在队列的头部或尾部高效地添加和删除元素。

#include <deque>

std::deque<int> myDeque;

// 添加元素
myDeque.push_front(1); // 在头部添加元素
myDeque.push_back(2); // 在尾部添加元素

// 访问元素
std::cout << myDeque.front() << std::endl; // 输出:1

// 动态调整大小
myDeque.pop_front(); // 删除头部元素
myDeque.resize(5, 0); // 调整大小为 5,并用 0 填充新元素

使用 std::list 实现链表

std::list 是一个双向链表容器,它可以在 O(1) 时间复杂度内插入和删除元素。

#include <list>

std::list<int> myList;

// 添加元素
myList.push_front(1);
myList.push_back(2);

// 访问元素
auto it = myList.begin();
std::cout << *it << std::endl; // 输出:1

// 动态调整大小
myList.pop_back(); // 删除尾部元素
myList.resize(5, 0); // 调整大小为 5,并用 0 填充新元素

实战案例:动态调整大小的数组

假设我们有一个程序需要处理不确定数量的输入值。我们可以使用 std::vectorstd::vector est un conteneur de tableau dynamique qui augmentera ou diminuera automatiquement sa capacité en cas de besoin.

#include <vector>
#include <iostream>

int main() {
  std::vector<int> inputValues;

  // 读取输入值并添加到数组中
  int value;
  while (std::cin >> value) {
    inputValues.push_back(value);
  }

  // 处理输入值中的数据......

  return 0;
}

Utilisez std::deque pour implémenter une file d'attente à double extrémité

std::deque est un conteneur deque qui permet aux ajouts de tête ou de queue et supprime les éléments efficacement. 🎜rrreee🎜Utilisez std::list pour implémenter une liste chaînée🎜std::list est un conteneur de liste doublement chaîné, qui peut être implémenté en O(1 ) complexité temporelle Insérer et supprimer des éléments. 🎜rrreee🎜Exemple pratique : redimensionnement dynamique des tableaux🎜Supposons que nous ayons un programme qui doit traiter un nombre incertain de valeurs d'entrée. Nous pouvons utiliser std::vector pour créer un tableau de taille dynamique pour stocker ces entrées. 🎜rrreee🎜En utilisant la fonction de redimensionnement dynamique de STL, nous pouvons écrire des programmes C++ concis et efficaces qui répondent facilement aux besoins d'évolutivité des structures de données du programme. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn