几个个遗留

重要少 而非多。

7、现在右值析构还有点问题。

 

6、

拷贝构造和 = 运算符分别什么时候调用

    HasPtrMem(const HasPtrMem& h) : d(new int(*h.d))
    {
        cout << "Copy construct: " << ++n_cptr << endl;
    }
    HasPtrMem& operator=(const HasPtrMem& h) {
        cout << "operator= construct: " << ++n_cptr << endl;
        return *this;
    }

HasPtrMem a =GetTemp();  //调用构造

    HasPtrMem a1;
    a1= GetTemp();   //调用重载的赋值。

5、深拷贝

赋值函数考虑 防止自我赋值 的原因是 因为要先释放,不考虑自我赋值的话,可能已经先释放了。 

 右值就是要用浅拷贝代替深拷贝。

 

4、earse ,把后面的往前移动,并返回下一个。这个时候的it已经废了,不能再用这个已删除的再it++了,不然会出错。要么重新赋值要么退出。

    vector<int>array{100,200,300,400};

    for (auto it = array.begin(); it!=array.end();it++) {
        cout << *it << endl;
       // if (200 == *it) array.erase(it);
    }
    for (auto it = array.begin(); it != array.end(); it++) {
        cout << *it << endl;
        if (200 == *it){
            array.erase(it);//此时it已经变成下一个的了
       //    auto newit=     array.erase(it);
        //   it = newit;
          // it--;
        }
        
    }

 

 

 3、

https://blog.csdn.net/linraise/article/details/20459751

2、已知某序求后面。

必须要有中序

 https://www.cnblogs.com/lanhaicode/p/10390147.html

1、一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) 。
a) edcba
b) decba
c) dceab
d) abcde

入栈顺序,可以入了还出,只有保证入的顺序是就可以了

c

posted @ 2022-03-10 09:55  cnchengv  阅读(26)  评论(0编辑  收藏  举报