STL
文章平均质量分 92
STL
2021狮子歌歌
煎和熬都是可以变美味的方式,加油也是~
展开
-
【STL学习之路】vector的模拟实现
vector的模拟实现 | vector的深拷贝问题原创 2022-12-31 22:08:50 · 493 阅读 · 0 评论 -
【STL学习之路】vector的使用 | vector的迭代器失效问题
vector就是顺序表的封装,是一个模板类,如上图所示。为方便vector里可以存任何数据类型,因此搞成了模板。第一个参数是模板类型T,T可以是int,double,char等,也可以是其他class或者struct第二个参数是一个空间配置器,(STL极致追求效率,向内存池来申请空间而不是直接向堆)。这个参数是缺省,一般不用管它。原创 2022-12-26 21:15:21 · 368 阅读 · 0 评论 -
【STL学习之路】string的模拟实现
str是一个指针,指向动态申请的数组,如果不显示写一个深拷贝,那么默认生成的拷贝构造就会采取值拷贝的形式进行,优化问题:如果输入的字符串很长,初始版本中读入字符就会不断+= 可能会频繁扩容,效率很低。所以:拷贝的时候需要另外开辟一段新空间,把原对象的空间的内容拷贝到新空间。优化的思想: 利用一个临时数组,先把读到的数据放到临时数组中。缺点:strlen()是O(N)的接口,调用多次,效率太低!其实不是的,因为可以通过接口来实现容器内成员的更改。如果临时数组满了,就接到字符串的后面。原创 2022-10-03 22:56:59 · 305 阅读 · 4 评论 -
【STL学习之路】string类的使用
迭代器是一个类型iterator每一个数据结构内部都有定义的这么一个类。如就是string的迭代器,就是vector的迭代器迭代器是一个像指针一样的类型,可能是指针,也可能不是指针,但是用法像指针,具体细节封装了起来。对于string和vector其实就是原生指针,但是对于list就不是指针了,而是一个自定义类型我们知道可以利用[]遍历string,但是[]只针对底层利用数组实现的类型,对于其他一些比如链表、树型结构就不能利用[]遍历了。iterator是对于STL容器的统一遍历方法,用法都是类似的。原创 2022-09-15 22:48:12 · 877 阅读 · 1 评论