Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man eine dynamische Größenänderung von Datenstrukturen mithilfe von C++ STL?

Wie implementiert man eine dynamische Größenänderung von Datenstrukturen mithilfe von C++ STL?

王林
王林Original
2024-06-04 18:05:00753Durchsuche

Ja, eine dynamische Größenänderung von Datenstrukturen ist mithilfe von C++-STL-Containern möglich. Container können automatisch vergrößert oder verkleinert werden, ohne dass manuell Speicher zugewiesen werden muss. Spezifische Schritte: Verwenden Sie std::vector, um ein dynamisches Array zu erstellen. Verwenden Sie std::deque, um eine Doppelschlange zu erstellen. Verwenden Sie std::list, um eine verknüpfte Liste zu erstellen.

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

Wie verwende ich C++ STL, um eine dynamische Größenänderung von Datenstrukturen zu implementieren?

Die C++ Standard Template Library (STL) bietet eine Reihe leistungsstarker Datenstrukturcontainer, die uns dabei helfen, Daten in unseren Programmen effizient zu speichern und zu verwalten. Ein Hauptmerkmal dieser Container ist die Möglichkeit, ihre Größe dynamisch an Änderungen im Datenvolumen anzupassen, ohne dass Speicher manuell neu zugewiesen werden muss.

Verwenden Sie std::vector, um dynamische Arrays

zu implementieren. 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 ist ein dynamischer Array-Container, der seine Kapazität bei Bedarf automatisch erhöht oder verringert.

#include <vector>
#include <iostream>

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

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

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

  return 0;
}

Verwenden Sie std::deque, um eine doppelendige Warteschlange zu implementieren

std::deque ist ein Deque-Container, der dem Kopf oder Schwanz das Hinzufügen von und ermöglicht Entfernt Elemente effizient. 🎜rrreee🎜Verwenden Sie std::list, um eine verknüpfte Liste zu implementieren🎜std::list ist ein doppelt verknüpfter Listencontainer, der in O(1 implementiert werden kann ) Zeitkomplexität Elemente einfügen und löschen. 🎜rrreee🎜Praktisches Beispiel: Dynamische Größenänderung von Arrays🎜Angenommen, wir haben ein Programm, das eine unbestimmte Anzahl von Eingabewerten verarbeiten muss. Wir können std::vector verwenden, um ein Array mit dynamischer Größe zum Speichern dieser Eingaben zu erstellen. 🎜rrreee🎜Durch die Verwendung der dynamischen Größenänderungsfunktion von STL können wir prägnante und effiziente C++-Programme schreiben, die die Skalierbarkeitsanforderungen der Datenstrukturen im Programm problemlos erfüllen. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man eine dynamische Größenänderung von Datenstrukturen mithilfe von C++ STL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn