C++第10课 STL容器 (四)

1.stack

后进先出

/*
    1.基本操作
    push();
    pop();
    top();
    size();
    empty();
*/
void testStack()
{
    stack<int> s;
    for (int i = 0; i < 10; i++)
    {
        s.push(i);
    }
    cout << s.size() << endl;
    while (!s.empty()) {
        cout << s.top() << endl;
        s.pop();
    }
}
class MM {
    friend ostream& operator<<(ostream& out, const MM& obj);
public:
    MM(string name, int age) :name(name), age(age) {}
protected:
    string name;
    int age;
};
ostream& operator<<(ostream& out, const MM& obj)
{
    out << obj.name << "\t" << obj.age << endl;
    return out;
}
void testUserData()
{
    stack<MM> sm;
    MM mm[3] = { {"小可爱",14},{"小宝贝",12},{"小帅哥",16} };
    for (int i = 0; i < 3; i++)
    {
        sm.push(mm[i]);
    }
    cout << sm.size() << endl;
    while (!sm.empty()) {
        cout << sm.top() << endl;
        sm.pop();
    }
}

2.简单实现stack

template<class T>
class myStack {
public:
    void push(T data) {
        memory.push_back(data);
    }
    void pop() {
        memory.pop_back();
    }
    int size() {
        return memory.size();
    }
    T top() {
        return memory.back();
    }
    bool empty() {
        return memory.size() == 0;
    }
protected:
    std::vector<T> memory;
};

 

posted @ 2021-09-08 20:40  Creature_lurk  阅读(31)  评论(0)    收藏  举报