zl程序教程

您现在的位置是:首页 >  后端

当前栏目

15.9 调整内置数组达到STL版本的功能

数组 功能 版本 调整 内置 STL 达到
2023-09-11 14:16:04 时间


我们之前反复指出内置数组的不足之处:它们动不动就会隐式转换成指针,它们不能通过赋值操作进行拷贝,它们不知道自己的大小(见13.6.2节),等等。我们也指出了它们最大的优点:它们近乎完美地利用了物理内存。

为了综合二者之长,我们可以创建一个具有数组优点而没有其不足的array容器。array的一个版本已经作为技术报告的一部分引入C++标准中。由于技术报告中的特性并不要求所有C++实现都必须包含,因此你所使用的实现可能并不包含array。但其思路是简单有用的:

 

这个定义并不完整,也不完全符合C++标准,但可展示设计思想。如果你使用的C++实现并未提供标准array,它也可提供一个有用的定义。如果C++实现提供了标准array,它应该在 array 中。注意由于array T, N “知道”它的大小为N,我们可以提供(我们也确实提供了)赋值==、!=等操作,就像vector一样。

作为一个示例,我们把array和15.4.2节中STL版high()结合起来使用:

 

 

注意当我们编写high()时,并没有考虑array。之所以high()可以与array一起使用是因为这二者都是按照标准的习惯进行定义的。


【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(一) STL 的源代码整体考虑的东西比较多,还要考虑和其他地方的结合,因此整体的设计是比较复杂的。基于这一系列原因,我们会以简单的形式去实现其核心框架接口,方便去学习 vector。
【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(二) STL 的源代码整体考虑的东西比较多,还要考虑和其他地方的结合,因此整体的设计是比较复杂的。基于这一系列原因,我们会以简单的形式去实现其核心框架接口,方便去学习 vector。
初阶C++——STL——string类、vector类和list类(使用方法+模拟实现+测试+思路分析) Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。
用函数数组指针来实现计算器的功能(简易模式)(不过稍微改改也能算比较复杂的) 整个代码块并不算多难理解,有兴趣的可以看看我写的扫雷(比这稍微复杂点,但与比赛相比差远了)。它的思路很简单,就是构造一个函数指针数组,然后把4个函数放到里面去,再在想用的时候把它调用出来。
GoFrame glist 基础使用和自定义遍历 GoFrame框架(下文简称gf)提供的数据类型,比如:字典gmap、数组garray、集合gset、队列gqueue、树形结构gtree、链表glist都是支持设置并发安全开关的。
【算法】1389. 按既定顺序创建目标数组(多语言实现) 给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组: 目标数组 target 最初为空。 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。 重复上一步,直到在 nums 和 index 中都没有要读取的元素。 请你返回目标数组。 题目保证数字插入位置总是存在。