关于OpenCASCADE数组序列的起始值

C/C++的数组是从0开始计算的,5个值的数组则下标会对应 0, 1, 2, 3, 4。

在数学上可能不这么数,我所知道的 Mathematica 内的 List 是从 1 开始作为下标的。

OpenCASCADE对数组下标的设计早期更靠近数学的理念,从1开始,这明显与C/C++语言标准不同,所以对每一个数组都得重新设计,然后为了兼容又给数组类定义了一个 Lower下标,Upper下标;数组下标应该是从 Lower 至 Upper (边界都取值)。

兼容Lower,Upper 下标使得在使用时得时时刻刻提神,而且可以看到里边有很多地方的代码,会假定数组是从1开始算下标的,看样子很难全部没有修改过来,所以如果将 Lower 设定为0 开始计数,虽然做到了与C/C++的等同,但使用起来就等同了埋地雷,指不定什么时候就给你来一个指针越界,要不要试试

话又说回来,真不习惯数组从1开始计算下标;画蛇添足地搞个Lower, Upper下标,弄出不必要的复杂度,感觉这是OpenCASCADE不够贴近语言使用,鸡肋的设计。

posted @ 2019-11-28 00:52  bitbybit3d  阅读(382)  评论(0编辑  收藏  举报