2016 - 2024

感恩一路有你

九九乘法表 C 的vector是怎么实现的?是靠链表吗?

浏览量:1870 时间:2021-03-13 15:29:54 作者:admin

C 的vector是怎么实现的?是靠链表吗?

这个要去翻源码了,STL里的代码说实话,真的看不太懂。

如果不是太纠结于具体细节,可以简单讲讲基本的实现思路,大致如下:

1.vector从功能上来讲,属于顺序存储容器,所以底层实现一般基于数组。

2.vector使用模板元编程技术实现,具体一点就是编译器根据使用时指定的实际类型在编译时执行模板特化,编译出对应的代码。也就是说vector

3.vector的重要特性之一就是实现了数组的动态递增。简单来说就是容器内部记录当前的足最大容量和使用量。当添加元素的时候,如果容器类发现当前的容量已耗尽,容器类会自动地重新分配一个更大容量的数组,把当前的所有元素copy过去,然后释放掉旧的数组,从而实现动态自增,这一切对使用者来说完全透明。

4.vector提供迭代器来提供统一的遍历访问接口,方便与STL中的其它组件进行交互。

这其中会有很多的细节,比如:

1.是否允许vector在必要时缩小自身容量?

2.vector容量耗尽后的递增量是多少?

3.是否应该提供线程安全容器?

有些东西可能真的需要去翻源码去看才能搞明白。或者可以参考侯捷的《STL源码剖析》。其实vector本身的实现并不会太复杂,它的实现思路也很简单,但是设计层面的一些取舍就需要经过仔细考量了。一般来说,STL是一个足够坚实的后盾,我们会频繁地使用它,以构建健壮高效的软件。能够理解STL里的一些设计思想和实现方式,对提高我们的编程思维和编程能力会所帮助。

九九乘法表 java实现九九乘法表代码 java设计一个学生类student

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。