每日计划-1105

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. 八股部分

  1. 拷贝构造函数和赋值运算符重载的作用
  • 拷贝构造函数:在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++的灵活性与可重用性,使得开发人员可以编写类型安全的通用代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值