当前位置:   article > 正文

cqueue结构pop_Queue队列详解

queue.pop有返回值吗

移除queue中的第一元素

此函数无返回值,想处理被移除的元素,必须先调用front()

调用者保证queue非空

front()

返回第一个被置入的元素,即返回queue最前端的元素

调用者保证queue不空

back()

返回最后一个被插入的元素

调用者保证queue非空

源码实现

STL中的queue实现源码如下,我们也可以根据自己需求重新实现queue的实作版本,相关实现方式可参考Stacks原理剖析一文。

// TEMPLATE CLASS queue

template >

class queue

{// FIFO queue implemented with a container

public:

typedef _Container container_type;

typedef typename _Container::value_type value_type;

typedef typename _Container::size_type size_type;

typedef typename _Container::reference reference;

typedef typename _Container::const_reference const_reference;

queue() : c()

{// construct with empty container

}

explicit queue(const _Container& _Cont) : c(_Cont)

{// construct by copying specified container

}

bool empty() const

{// test if queue is empty

return (c.empty());

}

size_type size() const

{// return length of queue

return (c.size());

}

reference front()

{// return first element of mutable queue

return (c.front());

}

const_reference front() const

{// return first element of nonmutable queue

return (c.front());

}

reference back()

{// return last element of mutable queue

return (c.back());

}

const_reference back() const

{// return last element of nonmutable queue

return (c.back());

}

void push(const value_type& _Val)

{// insert element at beginning

c.push_back(_Val);

}

void pop()

{// erase element at end

c.pop_front();

}

const _Container& _Get_container() const

{// get reference to container

return (c);

}

protected:

_Container c;// the underlying container

};

queue实例

/****************************************************************

*函数名称:QueueTest

*功 能:普通队列操作示例

*作 者:Jin

*日 期:2016年7月6日

****************************************************************/

void QueueTest()

{

queue strQueue;

//insert three element into the queue

strQueue.push("Whatever is worth doing is worth doing well.");

strQueue.push("The hard part isn’t making the decision. It’s living with it.");

strQueue.push("there are more than four words!");

while (!strQueue.empty())

{

cout << strQueue.front() << endl;

strQueue.pop();

}

}

输出

依次打印push到queue中的语句

590535cfa8f97f1e00f0c87797a8738f.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/908194
推荐阅读
相关标签
  

闽ICP备14008679号