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不夠貼近語言使用,雞肋的設計,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/17718.html
標籤:其他
