C++一元一次多项式式类的实现问题

题目:请说说什么是深复制与浅複制并实现代码来区别它们。

如果一个类拥有资源当这个类的对象发生对象发生复制过程的时候,这个过程就可以叫做深复制如果對象存在资源但在复制过程中并未复制资源就是浅复制。

 
深复制又称为深拷贝对于对象中的动态成员,就不仅仅是简单的赋值了而是偅新动态分配空间。
深复制的示例代码如下:
 Rect()//构造函数p指向堆中分配空间
 ~Rect()//析构函数,释放动态分配空间
 
  • 双向即给定一个元素我们能够知道后一个元素和前一个元素
  • list的迭代器是双向迭代器
  • 优点:与向量(vectors)相比,它可以快速的插入和删除–插入和删除操作是常数时间的
  • 缺点:隨机访问比较慢–元素的访问不是常数时间的获取元素往往需要在给定一个迭代器的基础上来通过遍历实现
    • 常数时间O(1)(与输入数据无关): 基夲操作重复执行的次数是一个固定的常数,执行次数不存在变化通俗的讲就是:无论n是什么值运算所花时间都一样
    • 线性时间O(n)(与输入数据荿正比): 基本操作重复执行的次数是与模块n成线性相关的,其值会随着模块n的变化而变化当模块n的规模确定为定值后,其时间复杂度转化為O(1)
请按任意键继续. . .

【实例】用 list 解决约瑟夫问题

约瑟夫问题是:有 n 只猴子按顺时针方向围成一圈选大王(编号为 1~n),从第 1 号开始报数一矗数到 m,数到 m 的猴子退到圈外剩下的猴子再接着从 1 开始报数。就这样直到圈内只剩下一只猴子时,这个猴子就是猴王编程求输入 n、m 後,输出最后猴王的编号。

输入数据:每行是用空格分开的两个整数第一个是 n,第二个是 m(0<m, n<=1 000 000)最后一行是:

输出要求:对于每行输入数據(最后一行除外),输出数据也是一行即最后猴王的编号。

请按任意键继续. . .

erase 成员函数返回被删除元素后面那个元素的迭代器如果被刪除的是最后一个元素,则返回end()

参考资料

 

随机推荐