STL之stack
程序员文章站
2022-06-15 12:30:09
stack即栈,一种先进后出的数据结构。 这次会在stack的基础上讲两个实际应用,以及讲一下stringstream。 直接上代码! 1、stack基础 #include #include using namespace std; int main() { //构 ......
stack即栈,一种先进后出的数据结构。
这次会在stack的基础上讲两个实际应用,以及讲一下stringstream。
直接上代码!
1、stack基础
#include<iostream> #include<stack> using namespace std; int main() { //构造 stack<int> s; //一般空参构造 //入栈 s.push(2); s.push(6); s.push(8); cout << s.size() << endl; //size:3 //stack不能遍历,只能一个一个退栈 while (!s.empty()) { //输出8 6 2 先进后出 cout << s.top() << ' '; //取栈顶,不会退栈 s.pop(); //退栈,无返回值 } cout << endl << s.size() << endl; //size:0 return 0; }
2、进制转换
#include<iostream> #include<stack> using namespace std; int main() { //进制转换10->2 stack<int> s; int n; cin >> n; while (n) { s.push(n % 2); n /= 2; } while (!s.empty()) { n = n * 10 + s.top(); s.pop(); } cout << n << endl; return 0; }
3、以空格分割的字符串逆序输出
#include<iostream> #include<stack> #include<string> #include<sstream> using namespace std; int main() { //以空格分割的字符串逆序输出 string str; stack<string> s; getline(cin, str); //输入一行字符串 stringstream ss; //stringstream常用于string类型转其他类型和切分以空格分割的字符串,头文件<sstream> ss << str; while (ss >> str) s.push(str); while (!s.empty()) { cout << s.top(); s.pop(); if (s.size() != 0) cout << ' '; } cout << endl; return 0; }
4、string类型转换
#include<iostream> #include<stack> #include<string> #include<sstream> using namespace std; int main() { //字符串转int/double,使用stringstream int intval; double douval; stringstream ss; string str1 = "268"; string str2 = "268.369"; ss << str1; ss >> intval; ss.clear(); //一定要clear ss << str2; ss >> douval; cout << double(intval + douval) << endl; //字符串类型与int类型之间的转换,使用函数 int n = stoi(str1); cout << 2 * n << endl; string str3 = to_string(n); cout << str1 + str3 << endl; return 0; }
上一篇: 利用python进行数据分析(六)
下一篇: 日期选择前后一周,日,年,月