一 stack容器基本概念
stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。
有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.
1.1 stack没有迭代器
Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。Stack不提供遍历功能,也不提供迭代器。
示例代码:
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
cout << "size:" << st.size() << endl;
while(!st.empty())
{
//访问栈顶
cout << st.top() << endl;
//出
st.pop();
}
二 stack常用API
2.1 stack构造函数
底层:
stack<T> stkT;//stack采用模板类实现, stack对象的默认构造形式:
stack(const stack &stk);//拷贝构造函数
示例代码:
stack<int> v;
v.push(1);
v.push(2); // stack采用模板类实现, stack对象的默认构造形式:
v.push(3);
stack<int> v2(v); // 拷贝构造函数
while(!v.empty())
{
cout << v.top() << endl; //头
v.pop(); //移除顶部成员
}
// stack<int> v2(v); // 拷贝构造函数,注意拷贝时机,前输出的时候已经把栈里的成员全部异常,现在再拷贝则为空
while (!v2.empty())
{
cout << v2.top() << endl; // 头
v2.pop(); // 移除顶部成员
}
特别注意:执行拷贝构造函数时,注意拷贝时机,前输出的时候已经把栈里的成员全部异常,现在再拷贝则为空。
2.2 stack赋值操作
底层:
stack& operator=(const stack &stk);//重载等号操作符
示例代码:
stack<int> v;
v.push(1);
v.push(2); // stack采用模板类实现, stack对象的默认构造形式:
v.push(3);v
stack<int> v2 = v; // 拷贝构造函数
while (!v2.empty())
{
cout << v2.top() << endl; // 头
v2.pop(); // 移除顶部成员
}
2.3 stack数据存取操作
底层:
push(elem);//向栈顶添加元素
pop();//从栈顶移除第一个元素
top();//返回栈顶元素
示例代码:
stack<int> v;
v.push(1);
v.push(2);
v.push(3); // 向栈顶添加元素
v.pop();
while (!v.empty())
{
cout << v.top() << endl; // 返回头
v.pop(); // 移除顶部成员
}
2.4 stack大小操作
底层:
empty();//判断堆栈是否为空
size();//返回堆栈的大小
示例代码:
stack<int> v;
v.push(1);
v.push(2);
v.push(3); // 向栈顶添加元素
int a = v.empty(); 判断堆栈是否为空
if(a == 0)
{
cout << "不是空" << endl;
}
else{
cout << "空" << endl;
}
int b = v.size();
标签:容器,cout,元素,push,拷贝,stack,构造函数
From: https://blog.csdn.net/weixin_47378530/article/details/139855551