
隊(duì)列
/* queue容器
* queue是一種先進(jìn)先出(First In First Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu),他有兩個(gè)出口.
*
* 隊(duì)列從一端進(jìn)入數(shù)據(jù),另一端出數(shù)據(jù)。
* 隊(duì)列中只有隊(duì)首和隊(duì)尾才可以被外界使用,因此隊(duì)列不允許有遍歷行為.
*
* 構(gòu)造函數(shù)(采用模板類實(shí)現(xiàn)):
* - `queue<T> que;`,默認(rèn)構(gòu)造形式;
* - `queue(const queue &que);`,拷貝構(gòu)造函數(shù);
*
* 賦值操作:
* - `queue& operator=(const queue &que);`,重載等號操作符;
*
* 數(shù)據(jù)存?。? * - `push(elem);`,從隊(duì)列尾部往隊(duì)列添加數(shù)據(jù);
* - `pop();`,從隊(duì)列頭部移除數(shù)據(jù);
* - `back();`,返回最后一個(gè)元素;
* - `front();`,返回第一個(gè)元素。
*
* 大小操作:
* - `empty();`,判斷堆棧是否為空;
* - `size();`,返回棧的大小。
*/
一個(gè)栗子:
class Person{
public:
Person(string name, int age){
this->m_name = name;
this->m_age = age;
}
string m_name;
int m_age;
};
void test001(){
//創(chuàng)建隊(duì)列
queue<Person> q;
//準(zhǔn)備數(shù)據(jù)
Person p1("猴哥", 1000);
Person p2("八戒", 400);
Person p3("沙師弟", 200);
Person p4("師傅", 30);
// 入隊(duì)
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
// 隊(duì)列無法遍歷,所以這里沒有用for循環(huán)
while (!q.empty()){
cout << "隊(duì)頭元素:" << q.front().m_name<< q.front().m_age
<< " 隊(duì)尾元素:"<<q.back().m_name<<q.back().m_age << endl;
q.pop();
}
}
int main(){
test001();
}