stack是堆棧容器,特點是“先進的元素後出”。其他操作方式參考vector容器
#include <stack>
- push()//入棧
- empty()//是否爲空
- top()//獲取棧頂元素
- pop()//彈出棧頂元素
stack對象的拷貝構造與賦值
- stack(const stack &stk); //拷貝構造函數
- stack& operator=(const stack &stk); //重載等號操作符
數據存取
- stack.top(); //返回最後一個壓入棧元素
大小
- stack.empty(); //判斷堆棧是否爲空
- stack.size(); //返回堆棧的大小
出棧 入棧
//入棧 出棧(先進後出)
void Fun1()
{
stack<int> s;
for (int i = 0; i<10;i++)
{
s.push(i + 1);
}
cout << "棧的大小:" << s.size() << endl;
while (!s.empty())
{
int temp = s.top();//獲取棧頂元素
cout << temp << " ";
s.pop();//彈出棧頂元素
}
}
存放類對象
class Person
{
public:
Person(const int age,const char *name)
{
this->m_age = age;
strcpy(this->m_name, name);
}
void PrintP()
{
cout << "age:" << m_age <<" "<<"name:" << m_name << endl;
}
private:
int m_age;
char m_name[24];
};
void Fun2()
{
Person p1(22, "zhangsan"), p2(23, "lisi"), p3(24, "wangwu");
stack<Person> s;
s.push(p1);
s.push(p2);
s.push(p3);
while (!s.empty())
{
Person p = s.top();
p.PrintP();
s.pop();
}
}
存放指針類
class Person
{
public:
Person(const int age,const char *name)
{
this->m_age = age;
strcpy(this->m_name, name);
}
void PrintP()
{
cout << "age:" << m_age <<" "<<"name:" << m_name << endl;
}
private:
int m_age;
char m_name[24];
};
void Fun3()
{
Person p1(22, "zhangsan"), p2(23, "lisi"), p3(24, "wangwu");
stack<Person *> s;
s.push(&p1);
s.push(&p2);
s.push(&p3);
while (!s.empty())
{
Person *p = s.top();
p->PrintP();
s.pop();
}
}