Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk melaksanakan saiz semula dinamik struktur data menggunakan C++ STL?
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.
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.
std::vector
untuk melaksanakan tatasusunan dinamikstd::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::vector
std::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!