赞
踩
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。
C++库以提供“模板”为主。所谓模板,是指不必预先制定类型的函数或类。我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来管理数据。为应对多种需求,STL为用户提供了多种名为容器(Container)的类,用于管理数据集合。在创建动态数组、表、栈、队列等数据结构时,我们只需要定义对应的容器,然后调用相应成员函数或算法即可。
函数(Function) | 描述(Description) |
---|---|
size() | 返回栈中元素数目 |
push() | 在栈顶增加元素 |
pop() | 移除栈顶元素 |
top() | 返回栈顶元素 |
empty() | 判断堆栈是否为空,堆栈为空则返回真 |
下面的所有操作均可用于堆栈,相等指堆栈有相同的元素并有着相同的顺序。
==
<=
>=
<
>
!=
Syntax:
//void push( const TYPE &val ); 向栈中插入元素 #include <iostream> #include <stack> //栈容器头文件 using namespace std; void test01() { stack<int> s; for(int i = 0; i < 10; i++) { if(i % 2 == 0) { s.push(i); //插入偶数 } } } int main() { test01(); system("pause"); return 0; }
Syntax:
// void pop(); 弹出栈顶元素,弹栈或者叫出栈 #include <iostream> #include <stack> //栈容器头文件 using namespace std; void test01() { stack<int> s; for(int i = 0; i < 10; i++) { if(i % 2 == 0) { s.push(i); //插入偶数,入栈 } } s.pop(); //出栈,此时栈中只剩下:0,2,4,6 } int main() { test01(); system("pause"); return 0; }
Syntax:
size_type size(); //返当前堆栈中的元素数目。如: #include <iostream> #include <stack> //栈容器头文件 using namespace std; void test01() { stack<int> s; for(int i = 0; i < 10; i++) { if(i % 2 == 0) { s.push(i); //插入偶数,入栈 } } size_t len = s.size(); //此时len为5 s.pop(); //出栈,此时栈中只剩下:0,2,4,6 len = s.size(); //此时len为4 } int main() { test01(); system("pause"); return 0; }
Syntax:
//TYPE &top(); 返回栈顶元素 #include <iostream> #include <stack> //栈容器头文件 using namespace std; void test01() { stack<int> s; for(int i = 0; i < 10; i++) { if(i % 2 == 0) { s.push(i); //插入偶数,入栈 } } int tmp = s.top(); //返回栈顶元素,并没有弹出栈,只是得到值 cout << "tmp:" << tmp << endl; //返回 8 } int main() { test01(); system("pause"); return 0; }
Syntax:
//bool empty(); 判断是否栈中为NULL #include <iostream> #include <stack> //栈容器头文件 using namespace std; void test01() { stack<int> s; if(s.empty()) { cout << "第一次:s中为NULL" << endl; }else { cout << "第一次:s中不为NULL" << endl; } for(int i = 0; i < 10; i++) { if(i % 2 == 0) { s.push(i); //插入偶数,入栈 } } if(s.empty()) { cout << "第二次:s中为NULL" << endl; }else { cout << "第二次:s中不为NULL" << endl; } } int main() { test01(); system("pause"); return 0; }
关于C++标准模板库中的stack的相关知识点,大概就说这些,下节我们就开始队列。
版权声明:转载请注明出处,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。