1. 完成 232.用栈实现队列

class MyQueue {
public:
MyQueue() {}
stack<int> s1, s2;
void push(int x) { s1.push(x); }
int pop() {
if (s2.empty()) {
while (!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
}
int res = s2.top();
s2.pop();
return res;
}
int peek() {
if (s2.empty()) {
while (!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
}
int res = s2.top();
return res;
}
bool empty() { return s1.empty() && s2.empty(); }
};
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
2. 八股部分
- 拷贝构造函数和赋值运算符重载的作用:
-
拷贝构造函数:在C++中,拷贝构造函数是在创建一个对象时,将另一个同类型对象的值复制到这个新对象中的特别构造函数。其主要作用是:
- 允许通过复制构造一个对象,例如当一个对象作为参数传递给函数或者返回一个对象时。
- 处理深拷贝的问题,确保动态分配的资源在复制时正确管理,避免内存泄漏或多重释放。
拷贝构造函数的形式通常是:
ClassName(const ClassName &obj) -
赋值运算符重载:赋值运算符重载是一种允许改变对象间赋值操作默认行为的手段。其主要作用是:
- 允许对象之间进行赋值,并提供对资源的管理,防止常见的错误(如浅拷贝)。
- 确保在赋值时正确地复制对象的状态。
赋值运算符重载的形式通常是:
ClassName& operator=(const ClassName &obj)
2.c++模板
C++模板是一种基于参数化类型定义通用类或函数的机制,允许在编写代码时不指定具体的数据类型,从而实现代码的重用。通过模板,可以创建与类型无关的通用代码。
模板主要有两种类型:
-
函数模板:用于定义通用的函数,该函数可以接受任何数据类型作为参数。
template <typename T> T add(T a, T b) { return a + b; } -
类模板:用于定义通用的类,该类可以使用不同的数据类型进行实例化。
-
template <typename T> class Box { private: T value; public: Box(T v) : value(v) {} T getValue() { return value; } };
模板的引入大大增强了C++的灵活性与可重用性,使得开发人员可以编写类型安全的通用代码。

1053

被折叠的 条评论
为什么被折叠?



