STL模拟实现
文章平均质量分 85
玛卡巴卡01
每天进步一点点
展开
-
vector的模拟实现(知根知底)
1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。原创 2023-10-14 14:56:31 · 36 阅读 · 4 评论 -
string的模拟实现(知根知底)
这里出错的原因是string类型中有char*这样一个自定义类型的数据,他会重新开辟一段新的空间,而普通的浅拷贝(也就是值拷贝),这时候str1对象只会简单的把他的那个空间的地址赋给str中的char*,因此两个string对象中的char*指向同一块空间,在他们销毁(调用析构函数的时候)会重复析构,导致后面哪一个析构的指针成了野指针,故而报错。,自定义类型在赋值的时候,他都是要调用operator=这个重载函数的,然重载函数中,在之间调用swap这个函数,试问,这样是不是构成死循环了?原创 2023-10-09 16:50:19 · 26 阅读 · 1 评论