阅读量:0
C++的stack
容器适配器可以存储自定义类型。要实现这一点,您需要确保满足以下条件:
- 自定义类型需要重载
<
运算符,因为stack
默认使用<
运算符来比较元素并进行排序。如果您希望使用其他比较方式,您需要提供自定义的比较函数或类。 - 如果您的自定义类型包含指针或其他资源管理对象,请确保正确地实现拷贝构造函数、赋值运算符和析构函数,以避免资源泄漏或其他问题。
以下是一个简单的示例,展示了如何在stack
中存储自定义类型:
#include <iostream> #include <stack> class MyType { public: int value; MyType(int v) : value(v) {} // 重载 '<' 运算符 bool operator<(const MyType& other) const { return value < other.value; } }; int main() { std::stack<MyType> myStack; myStack.push(MyType(3)); myStack.push(MyType(1)); myStack.push(MyType(4)); while (!myStack.empty()) { MyType top = myStack.top(); myStack.pop(); std::cout << "Top value: " << top.value << std::endl; } return 0; }
在这个示例中,我们定义了一个名为MyType
的自定义类型,并重载了<
运算符。然后,我们创建了一个stack
对象来存储MyType
对象,并执行了一些基本操作。