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不够贴近语言使用,鸡肋的设计。List