langyo_v3
姚氏帅哥 发表于 2017-6-9 21:46
荒谬!谁跟你说vector是链表的
vector明明是用数组实现的好吗
链表是list和forward_list

vector如果发现自己的缓冲区不够用,就会再开辟一个缓冲区,搞得跟链表似得

还有,我偷偷在教室里写头文件已经2小时了,还是满屏报错,你帮我看看好吗
(已经200行了,但只写了2个成员函数的实现TAT)

Yaossg
langyo_v3 发表于 2017-6-9 21:52
vector如果发现自己的缓冲区不够用,就会再开辟一个缓冲区,搞得跟链表似得

还有,我偷偷在教室里写头文 ...

哇。。。。看完这段代码,辣眼睛。。。。简直了,我感觉是在看Java代码
首先_from=to--;这种代码真的不是为了混淆视听以及减慢速度的吗,_from=to才是正解,后面还有几处你也改改
然后就是瞬间爆炸的return this,this明明是指向对象自己的指针呀。。。。
接着要又看到了data==null我大概知道你为什么这么写了,错的有道理XD
你至今不知道c++中指针与引用的区别。。。
length()add()operator[]你还没定义就去调用,编译器不报错才怪。。。
最后我看到了我过去很早之前我犯过的错误在你的身上重演,我先不说,你自己慢慢找,就在insert函数里
我要承认,我实战经验确实比较欠缺,但是语法是我的超级长项,尤其是一些问题是编译器不会报错的。。。(但是好的编译器会给你警告)

Paindar
langyo_v3 发表于 2017-6-9 19:25
我需要动态内存是因为一些变态的用途,它不是用来玩NOIP/NOI的

比如说实现动态链表,vector就是这么玩的 ...

vector是数组,内部地址是连续的,set和map才是链式结构。
当内存不够的时候他会重新申请一块更大的内存,大小为原来的1.732还是2忘了

建议你还是先看看STL源码再自己造轮子

langyo_v3
姚氏帅哥 发表于 2017-6-9 22:28 哇。。。。看完这段代码,辣眼睛。。。。简直了,我感觉是在看Java代码 首先_from=to--;这种代码真的不是 ...

哪来的_form=to--???…
函数没实现我能理解…可编译器报的不是这个错啊…人家是说我的所有变量特么的全部超出作用域,但我的所有变量都在作用域内声明了啊…好坑…
以及,毕竟这是头文件,你事先不先写好成员函数是没问题的,它不像cpp,必须是一旦定义就得实现,而且头文件编译之后不会产生.obj(亲测)
return this是我的锅…但怎么做?…

langyo_v3
Paindar 发表于 2017-6-9 22:44 vector是数组,内部地址是连续的,set和map才是链式结构。 当内存不够的时候他会重新申请一块更大的内存 ...

很可惜,我几乎不用vector

STL源码没时间看,最近考试

Yaossg
langyo_v3 发表于 2017-6-9 22:54
哪来的_form=to--???…
函数没实现我能理解…可编译器报的不是这个错啊…人家是说我的所有变量特么的全部 ...

因为你把from全部写成form了。。。。
                        //情况2:从最后开始删
                        if(to==_to){
                                _to=form--;
                                return this;
                        }

_to=form--;应为_to=from-1;

还有你的问题 return *this;不就行了吗
还有data==null根本无意义,一个引用就是一个对象的别名,这么可能是null呢,以及引用不具有指针语意,也不是指针,c++也没有null这种东西
还有我说了我留了一个小问题没跟你说,编译器不会报错,最多警告但是却相当致命
就在insert函数里,你找找看,最好是自己找出来,我给个小提示吧:临时变量何时销毁?返回的类型又是什么?
等你吧上述问题全部改完,就在发给我看看。。。希望会有好的结果

langyo_v3
姚氏帅哥 发表于 2017-6-9 23:03 因为你把from全部写成form了。。。。 _to=form--;应为_to=from-1;

这是第一部分
  1.         memoryUnit&del(unsigned int from,unsigned int to){
  2.             //检查参数是否有效
  3.             if(from>to){
  4.                 //不要吐槽这里,因为这里在经过编译器优化后是不占内存的!
  5.                 unsigned int temp=from;
  6.                 from=to;
  7.                 to=temp;
  8.             }
  9.             if(from<_from || to>_to){
  10.                 //throw(error(*this,"del参数无效"));
  11.             }
  12.             if(_data==(void*)0){
  13.                 //throw(error(*this,"未初始化"));
  14.             }
  15.             //改写有效数据游标
  16.             //情况1:从头开始删
  17.             if(from==_from){
  18.                 _from=to++;
  19.                 return *this;
  20.             }
  21.             //情况2:从最后开始删
  22.             if(to==_to){
  23.                 _to=from--;
  24.                 return *this;
  25.             }
  26.             //情况3:在中间删
  27.             for(unsigned int i=to+1,j=from;i<=_to;i++,j++){
  28.                 _data[j]=_data[i];
  29.             }
  30.             _to-=(to-from+1);
  31.             return *this;
  32.         }
复制代码

Paindar
langyo_v3 发表于 2017-6-9 22:55
很可惜,我几乎不用vector

STL源码没时间看,最近考试

不用vector用啥。。用数组吗。。。糟心了老哥

今生已封笔
666666666666

顶个热水袋
langyo_v3 发表于 2017-6-9 19:26
能把你用的解析汇编的软件发给我吗?

vs打断点,反汇编

第一页 上一页 下一页 最后一页