STL堆栈和队列的内部实现

internal implementation of stl stack and queues

本文关键字:内部 实现 队列 堆栈 STL      更新时间:2023-10-16

我使用stl堆栈和队列来存储大量的项目集合。如何在标准模板库内部实现堆栈?是链表的形式吗?或者有没有给它的最大尺寸?

c++标准库中的堆栈和队列都是容器适配器。这意味着它们使用指定的容器作为存储数据的底层手段。默认情况下,它们都使用std::deque,但您可以使用例如

的vector
std::stack<int,std::vector<int>> s;
vector works internally...

#include <iostream>
#include <vector>
struct Sample
{
    Sample(){}
    Sample(const Sample & obj)
    {
        std::cout<<"Sample copy constructor"<<std::endl;
    }
};
int main()
{
    std::vector<Sample> vecOfInts;
    std::cout<<"Capacity :: "<<vecOfInts.capacity()<<std::endl;
    std::cout<<"Size :: "<<vecOfInts.size()<<std::endl;
    int capcity = vecOfInts.capacity();
    for(int i = 0; i < capcity + 1; i++)
        vecOfInts.push_back(Sample());
    std::cout<<"Capacity :: "<<vecOfInts.capacity()<<std::endl;
        std::cout<<"Size :: "<<vecOfInts.size()<<std::endl;
    for(int i = 0; i < capcity + 1; i++)
            vecOfInts.push_back(Sample());
    std::cout<<"Capacity :: "<<vecOfInts.capacity()<<std::endl;
    std::cout<<"Size :: "<<vecOfInts.size()<<std::endl;
    return 0;
}