Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan saiz semula dinamik struktur data menggunakan C++ STL?

Bagaimana untuk melaksanakan saiz semula dinamik struktur data menggunakan C++ STL?

王林
王林asal
2024-06-04 18:05:00756semak imbas

Ya, saiz semula dinamik struktur data boleh dilakukan menggunakan bekas C++ STL. Bekas boleh menambah atau mengurangkan saiz secara automatik tanpa peruntukan memori manual. Langkah khusus: Gunakan std::vector untuk mencipta tatasusunan dinamik. Gunakan std::deque untuk mencipta deque. Gunakan std::list untuk membuat senarai terpaut.

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

Bagaimana untuk menggunakan C++ STL untuk melaksanakan pensaiz semula dinamik struktur data?

Pustaka Templat Standard (STL) C++ menyediakan satu siri bekas struktur data yang berkuasa untuk membantu kami menyimpan dan mengurus data dalam program kami dengan cekap. Ciri utama bekas ini ialah keupayaan untuk melaraskan saiznya secara dinamik untuk menampung perubahan dalam volum data tanpa perlu mengagihkan semula memori secara manual.

Gunakan std::vector untuk melaksanakan tatasusunan dinamik

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 ialah bekas tatasusunan dinamik yang akan meningkatkan atau mengurangkan kapasitinya secara automatik apabila diperlukan .

#include <vector>
#include <iostream>

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

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

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

  return 0;
}

Gunakan std::deque untuk melaksanakan baris gilir dua hujung

std::deque ialah bekas deque yang membolehkan kepala atau Ekor menambah dan menghilangkan unsur dengan cekap. 🎜rrreee🎜Gunakan std::list untuk melaksanakan senarai terpaut🎜std::list ialah bekas senarai terpaut berganda, yang boleh dilaksanakan dalam O(1 ) kerumitan masa Masukkan dan padam elemen. 🎜rrreee🎜Contoh Praktikal: Mengubah Saiz Tatasusunan Secara Dinamik🎜Andaikan kita mempunyai program yang perlu memproses bilangan nilai input yang tidak pasti. Kita boleh menggunakan std::vector untuk mencipta tatasusunan bersaiz dinamik untuk menyimpan input ini. 🎜rrreee🎜Dengan menggunakan ciri saiz semula dinamik STL, kami boleh menulis program C++ yang ringkas dan cekap yang dengan mudah memenuhi keperluan kebolehskalaan struktur data dalam program. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan saiz semula dinamik struktur data menggunakan C++ STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn