一个泛型 Stack,装两种东西
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)
#include <iostream>
#include <string>
#include <vector>
template <typename T>
class Stack {
public:
void push(const T &v) { data_.push_back(v); }
T pop() { T v = data_.back(); data_.pop_back(); return v; }
bool empty() const { return data_.empty(); }
int size() const { return static_cast<int>(data_.size()); }
private:
std::vector<T> data_;
};
int main() {
Stack<int> si;
si.push(1); si.push(2); si.push(3);
int a = si.pop();
Stack<std::string> ss;
ss.push("x"); ss.push("y");
std::string b = ss.pop();
std::cout << si.size() << "/" << a << "/"
<< ss.size() << "/" << b << "/" << si.empty() << "\n";
return 0;
}
全部评论