STL之stack

2020-04-07 16:00:27来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

STL之stack

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;
}

原文链接:https://www.cnblogs.com/love-ziji/p/12641534.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:【题解】Luogu1739 表达式括号匹配

下一篇:用C++实现:Sine之舞