【C++】listとvectorでstackとqueueを実現!!

1163 ワード

stackの特徴:
  • stackはC++Referenceに5つの関数があり、それぞれempty(),size(),top(),push(),pop()である.
  • stackはデータの出入り時に:先進後出、後進先出である.vectorを利用して中のpushを利用できるようにするback()とpop_back()関数実装.

  • コードは次のとおりです.
    template>
    class Stack
    {
    public:
    	Stack()
    		:s(NULL)
    	{}
    	void Push(T d)
    	{
    		s.push_back(d);
    	}
    	void Pop()
    	{
    		if (s.size())
    			s.pop_back();
    	}
    	size_t Size()
    	{
    		return s.size();
    	}
    	T& Top()
    	{
    		return *(s.begin());
    	}
    	bool Empty()
    	{
    		return s.empty();
    	}
    private:
    	Stacktype s;
    };

    Queueの特徴:
    1、queueの特徴は先進先出、後進後出
    2、vectorで実現するとpop時にはpop要素の後ろの要素が前に移動する必要があり、効率が悪い.listを用いて実現すれば,要素の移動の問題を完全に回避できる.
    コードは次のとおりです.
    template>
    class Queue
    {
    public:
    	Queue()
    		:q(NULL)
    	{}
    	void Push(T d)
    	{
    		q.push_back(d);
    	}
    	void Pop()
    	{
    		if (q.size())
    			q.pop_front();
    	}
    	size_t Size()
    	{
    		return q.size();
    	}
    	bool Empty()
    	{
    		return q.empty();
    	}
    	T& Front()
    	{
    		return *(q.begin());
    	}
    private:
    	Queuetype q;
    };

    しかしC++標準ライブラリ内のstackやqueueはvectorやlistで実現されるものではなく,ここでは小編レベルが限られているため一つ一つ実現されない.