2013-04-15 68 views
0

我的老師通過從(myarray[n+1])開始排列並從i=1開始輸入數組,從1開始數組。數組1,常見?

這是現實世界中的常見做法嗎? 他一直在做一些其他奇怪的東西,但這是讓我摸索的那個。

+0

你確定你的導師正在那麼做嗎?如此處所述,這聽起來完全瘋狂。 – juanchopanza

+0

問他,爲什麼他保持數組[0]空置? (浪費空間) –

+0

Kunde *膏藥[MAX_PLASSER + 1];這是他的實際代碼 – Stuppp

回答

2

當然沒有。 C++中的數組從0開始,這很常見。而且,你付出了更多不必要的因素,這在現實世界中並不好。

5

不,這不是常見做法。這通常被認爲是不好的做法。

以語言設計的方式對索引數組進行索引。如果你真的想索引1,使用Matlab。你可能會問你的老師他們爲什麼這樣做(然後告訴他們不要)。

數組元素總是以某種方式初始化。即使你簡單地忽略了第0個元素,它仍然存在,它浪費了不必要的內存。它的構造函數甚至可能會有一些不需要的副作用。

當你想要與標準庫一起玩時,你也會有很多痛苦。突然你必須仔細思考,當你創建一個載體std::vector<int> v(array, array+N)std::vector<int> v(std::begin(array), std::end(array))。與標準算法等類似。

如果你想讓一個理由感到從0開始索引,記住它只是一個偏移量。數組下標運算符a[i]相當於*(a + i)。它基本上只是將指針a(可能通過某種轉換檢索)偏移i

+0

好的,謝謝。下次我跟他說話時我會提到這一點。 – Stuppp

1

不在C++中,就像在C++中一樣,索引表示從爲數組分配的內存塊開始的偏移量。所以實際上,你的老師正在浪費一定數量的字節(取決於數組的內容)。

它的使用,例如,在Lua,其中陣列通常從1開始

0

我在C和C++被編程爲生活在過去的20年左右,從來沒有一次見過這種在任何代碼,我一直在努力。所以,不,這絕對不是很常見,甚至不推薦。這與其他人都在說...

0

C/C++方法是使用從0開始的數組索引。有關深入討論關於安德魯·柯尼希斯關於非對稱邊界的優秀系列。 Part1,Part2,Part3,Part4Part5。但是有一些算法在數組從0開始時更容易描述。一個是heapsort