langyo_v3 发表于 2017-6-9 19:25
我需要动态内存是因为一些变态的用途,它不是用来玩NOIP/NOI的
比如说实现动态链表,vector就是这么玩的 ...
荒谬!谁跟你说vector是链表的
vector明明是用数组实现的好吗
链表是list和forward_list
实现动态链表炒鸡简单的。。。(用Java会更简单
但是明明有标准库的为什么你要自己写呢....
姚氏帅哥 发表于 2017-6-9 21:46
荒谬!谁跟你说vector是链表的
vector明明是用数组实现的好吗
链表是list和forward_list
vector如果发现自己的缓冲区不够用,就会再开辟一个缓冲区,搞得跟链表似得
还有,我偷偷在教室里写头文件已经2小时了,还是满屏报错,你帮我看看好吗
(已经200行了,但只写了2个成员函数的实现TAT)
langyo_v3 发表于 2017-6-9 21:52
vector如果发现自己的缓冲区不够用,就会再开辟一个缓冲区,搞得跟链表似得
还有,我偷偷在教室里写头文 ...
哇。。。。看完这段代码,辣眼睛。。。。简直了,我感觉是在看Java代码
首先_from=to--;这种代码真的不是为了混淆视听以及减慢速度的吗,_from=to才是正解,后面还有几处你也改改
然后就是瞬间爆炸的return this,this明明是指向对象自己的指针呀。。。。
接着要又看到了data==null我大概知道你为什么这么写了,错的有道理XD
你至今不知道c++中指针与引用的区别。。。
length()add()operator[]你还没定义就去调用,编译器不报错才怪。。。
最后我看到了我过去很早之前我犯过的错误在你的身上重演,我先不说,你自己慢慢找,就在insert函数里
我要承认,我实战经验确实比较欠缺,但是语法是我的超级长项,尤其是一些问题是编译器不会报错的。。。(但是好的编译器会给你警告)
langyo_v3 发表于 2017-6-9 19:25
我需要动态内存是因为一些变态的用途,它不是用来玩NOIP/NOI的
比如说实现动态链表,vector就是这么玩的 ...
vector是数组,内部地址是连续的,set和map才是链式结构。
当内存不够的时候他会重新申请一块更大的内存,大小为原来的1.732还是2忘了
建议你还是先看看STL源码再自己造轮子
姚氏帅哥 发表于 2017-6-9 22:28 哇。。。。看完这段代码,辣眼睛。。。。简直了,我感觉是在看Java代码 首先_from=to--;这种代码真的不是 ...
哪来的_form=to--???…
函数没实现我能理解…可编译器报的不是这个错啊…人家是说我的所有变量特么的全部超出作用域,但我的所有变量都在作用域内声明了啊…好坑…
以及,毕竟这是头文件,你事先不先写好成员函数是没问题的,它不像cpp,必须是一旦定义就得实现,而且头文件编译之后不会产生.obj(亲测)
return this是我的锅…但怎么做?…
Paindar 发表于 2017-6-9 22:44 vector是数组,内部地址是连续的,set和map才是链式结构。 当内存不够的时候他会重新申请一块更大的内存 ...
很可惜,我几乎不用vector
STL源码没时间看,最近考试
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函数里,你找找看,最好是自己找出来,我给个小提示吧:临时变量何时销毁?返回的类型又是什么?
等你吧上述问题全部改完,就在发给我看看。。。希望会有好的结果
姚氏帅哥 发表于 2017-6-9 23:03 因为你把from全部写成form了。。。。 _to=form--;应为_to=from-1;
这是第一部分
- memoryUnit&del(unsigned int from,unsigned int to){
- //检查参数是否有效
- if(from>to){
- //不要吐槽这里,因为这里在经过编译器优化后是不占内存的!
- unsigned int temp=from;
- from=to;
- to=temp;
- }
- if(from<_from || to>_to){
- //throw(error(*this,"del参数无效"));
- }
- if(_data==(void*)0){
- //throw(error(*this,"未初始化"));
- }
- //改写有效数据游标
- //情况1:从头开始删
- if(from==_from){
- _from=to++;
- return *this;
- }
- //情况2:从最后开始删
- if(to==_to){
- _to=from--;
- return *this;
- }
- //情况3:在中间删
- for(unsigned int i=to+1,j=from;i<=_to;i++,j++){
- _data[j]=_data[i];
- }
- _to-=(to-from+1);
- return *this;
- }
langyo_v3 发表于 2017-6-9 22:55
很可惜,我几乎不用vector
STL源码没时间看,最近考试
不用vector用啥。。用数组吗。。。糟心了老哥
666666666666
langyo_v3 发表于 2017-6-9 19:26
能把你用的解析汇编的软件发给我吗?
vs打断点,反汇编