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

王林
Lepaskan: 2024-06-04 18:05:00
asal
794 orang telah melayarinya

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 填充新元素
Salin selepas log masuk

使用 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 填充新元素
Salin selepas log masuk

使用 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 填充新元素
Salin selepas log masuk

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

假设我们有一个程序需要处理不确定数量的输入值。我们可以使用 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;
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!